1

カスタム「プロファイル」モデルを追加し、ユーザーの保存/作成時にインスタンス化することで、1.4x メソッドを使用してユーザー オブジェクトを拡張しました。登録プロセス中に、プロファイル モデルに追加情報を追加したいと考えています。ビューは正常にレンダリングされますが、プロファイル モデルは保存されません。以下のコード:

    user = User.objects.create_user(request.POST['username'], request.POST['email'], request.POST['password'])
    user.save()

    profile = user.get_profile()
    profile.title = request.POST['title']
    profile.birthday = request.POST['birthday']

    profile.save()
4

2 に答える 2

6

このコードで models.py を更新します

from django.db.models.signals import post_save
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        profile, created = UserProfile.objects.get_or_create(user=instance)

post_save.connect(create_user_profile, sender=User)

今あなたがするとき

user.save()

プロファイル オブジェクトが自動的に作成されます。それからあなたはすることができます

user.profile.title = request.POST['title']
user.profile.birthday = request.POST['birthday']
user.profile.save()

それが役に立てば幸い。

于 2013-03-26T09:04:46.823 に答える
1

user は User モデルのインスタンスです。そして、すでに存在するインスタンスを取得しようとしているようです。user.get_profile から何を返すかによって異なります。UserProfile インスタンスを開始する必要があります。より簡単な方法は次のようになります。

user_profile = UserProfile.objects.create(user=user)
user_profile.title = request.POST['title']
...
.
.
user_profile.save()
于 2013-03-26T06:46:00.420 に答える