Django信号简单片段混乱?

时间:2017-07-30 13:36:59

标签: python django django-models

这是我在互联网上发现的一个简单的Django信号片段,用于在用户创建后生成个人资料。第二个post_save信号需要什么。是不是第一个'创建'已经保存了个人资料?那么为什么要创建第二个接收器?

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

1 个答案:

答案 0 :(得分:0)

created信号的post_save参数表示实例是否在之前保存(即,是否是新创建的)。第一个处理程序为新创建的Profile创建新的User实例,而第二个处理程序在ProfileUser时保存已实例化的@receiver(post_save, sender=User) def create_or_save_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) else: instance.profile.save() 实例保存。

话虽这么说,这两个处理程序可以合并为一个:

                <div class="col-md-4 no-padding">
                    <img src="{{ event_list.galleryimagesevents_set.all.0.file_thumbnail.url }}" class="img-responsive img-events-thumb">
                </div>