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.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 回答