0

ここでDjangoを初めて使用した場合、誰かが私に渡したコードのユーザープロファイルモデルでこの関数を見つけましたが、私は一生の間、ドキュメントで見つけることも、彼のコードの他の場所で見つけることもできません。しかし、ユーザー認証を含むすべてが機能しているように見えるので、これがcreate_new_user_and_profileどこから来ているのかわかりませんか?また、これがユーザーにとって最善の方法であるかどうかわからない場合、誰かがいくつかのヒントを与えることができますか?

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)


class UserProfile(models.Model):
    user = models.OneToOneField(User)
    office_number = models.IntegerField(null=True)

    def initialize_static_fields(self, office_number):
        user = models.OneToOneField(User)
        self.office_number = office_number

    def create_new_user_and_profile(username, email, password, office_number):
        u = User.objects.create_user(username, email, password)
        u.get_profile().initialize_static_fields(office_number)
4

1 に答える 1

1

ユーザーモデルにはcreate_userメソッドがありますが、デフォルトではプロファイルを作成しません。新しいユーザーが作成されるたびに、シグナルを使用してプロファイルを作成できます。

def create_profile(sender, instance, created, **kwargs):
    profile = None
    if created:
        profile, created = Profile.objects.get_or_create(user=instance)

post_save.connect(create_profile, sender=User)

モデルに追加されたメソッドは、ユーザーを作成してcreate_user_profileをトリガーするカスタムメソッドであり、追加情報で補完されます。IMO、このメソッドはCalscopeUserProfileの一部であってはならず、(フォーム)ビュー(プライベート)またはサービス関数に属している可能性があります。

于 2012-09-21T08:20:11.053 に答える