Django:个人资料&创建变量

时间:2013-07-03 10:29:13

标签: django

我已经和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)

我试过单独调用语句并且它可以正常工作

2 个答案:

答案 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)