我通过添加自定义“配置文件”模型,然后在用户save / create上实例化,使用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()
答案 0 :(得分: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()
希望它有所帮助。
答案 1 :(得分:1)
user是User模型的一个实例。而且似乎你正试图获得一个已经存在的实例。这取决于你从user.get_profile返回的内容。您必须启动UserProfile实例。更简单的方法可能是这样的:
user_profile = UserProfile.objects.create(user=user)
user_profile.title = request.POST['title']
...
.
.
user_profile.save()