1

これはバグではありませんが、 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 関数の戻り値と、created のブール値を返します。

私の質問は、具体的には、作成された値であるプロファイルを保存することの重要性です。

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)

結構です。

変数を 1 つだけ使用し、他の変数を使用していない場合 (エラーから判断):

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