这是我在互联网上发现的一个简单的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()
答案 0 :(得分:0)
created
信号的post_save
参数表示实例是否在之前保存(即,是否是新创建的)。第一个处理程序为新创建的Profile
创建新的User
实例,而第二个处理程序在Profile
为User
时保存已实例化的@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>