我已经和django合作了一段时间了,这不是一个bug,但是我想知道 为什么create_profile方法需要保存配置文件并创建变量?
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
我试过了
print >> sys.stderr , "create_user" + str(profile) + (str(created))
并返回User_Profile unicode函数返回值和创建的布尔值。
我的问题具体是存储配置文件,创建值的重要性。
UserProfile.objects.get_or_create(user=instance)
我试过单独调用语句并且它可以正常工作
答案 0 :(得分:2)
如果您以后要使用它们,通常会这样做:
profile, created = UserProfile.objects.get_or_create(user=instance)
if profle.check_something_here:
return profile.something_else
或者也许:
profile, created = UserProfile.objects.get_or_create(user=instance)
if created:
# do something with the newly created profile
else:
# do something else if the profile was already there
当然,如果你需要对它们做些什么的话。否则UserProfile.objects.get_or_create(user=instance)
也是正确的。
答案 1 :(得分:1)
如果您不需要,则无需将调用结果分配给任何变量。所以
UserProfile.objects.get_or_create(user=instance)
很好。
如果您只使用一个变量而不使用另一个变量(根据错误判断):
profile, _ = UserProfile.objects.get_or_create(user=instance)