【问题标题】:Django signal post_save not created return two timesDjango 信号 post_save 未创建返回两次
【发布时间】:2021-11-05 17:14:36
【问题描述】:

当我尝试在信号中更新帖子时,会发生此错误:

from django.db.models.signals import post_save

@receiver(post_save, sender=Post)
def post_save_receiver(sender, instance, created, *args, **kwargs):

  if created:
    print(instance.author, " Created")

  else:
    print(instance.author, " was just saved")

输出:

root was just saved

root was just saved

这是我更新帖子的时候。它运行了两次。为什么?

【问题讨论】:

    标签: django django-signals


    【解决方案1】:

    我不是 100% 确定您的案例,但您应该创建它,而不是打印。

    @receiver(post_save, sender=User)
    def create_profile(sender, instance, created, **kwargs):
        if created:
            Profile.objects.create(user=instance)
    
    
    @receiver(post_save, sender=User)
    def save_profile(sender, instance,  **kwargs):
        try:
            instance.profile.save()
        except ObjectDoesNotExist:
            Profile.objects.create(user=instance)
    

    【讨论】:

    • 很抱歉,我的视图中有两种保存方法
    • 一切都很好
    • 很高兴知道。坚持下去。
    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2017-10-10
    • 2017-04-06
    • 2016-05-04
    相关资源
    最近更新 更多