1

我已经使用 django 有一段时间了,这不是一个错误,但是我想知道为什么 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)

我试过单独调用该语句并且它有效

4

2 回答 2

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)也是正确的。

于 2013-07-03T10:33:55.840 回答
1

如果您不需要它们,则无需将调用结果分配给任何变量。所以

UserProfile.objects.get_or_create(user=instance)

很好。

如果您只使用一个变量而不使用另一个变量(根据错误判断):

profile, _ = UserProfile.objects.get_or_create(user=instance)
于 2013-07-03T10:31:48.180 回答