我有一个User对象,它有一个UserExtra模型定义的附加属性:
class UserExtra(models.Model):
user = models.OneToOneField(User, related_name='user_extra')
favourite_cake = models.CharField(max_length=100)
我的用户:
>>> u = User.objects.get(pk=1)
>>> u
<User: rabid_sparrow>
我想为此用户添加favourite_cake
属性。我试过这样做:
>>> u.user_extra.favourite_cake = 'black forrest'
>>> u.save()
>>> u.user_extra.favourite_cake
u'black forrest'
但是,如果我立即重新加载用户,则不会设置该属性:
>>> u = User.objects.get(pk=1)
>>> u.user_extra.favourite_cake
>>>
>>> type(u.user_extra.favourite_cake)
<type 'NoneType'>
我尝试手动保存字段,但这引发了user_id不是唯一错误:
>>> ue = UserExtra(user=u, favourite_cake='black forrest')
>>> ue.save()
-snip-
IntegrityError: column user_id is not unique
为用户保存favourite_cake
的正确方法是什么?
答案 0 :(得分:2)
我不知道上一个例子有什么问题,但首先你需要保存user_extra:
>>> u.user_extra.favourite_cake = 'black forrest'
>>> u.user_extra.save()
然后尝试重新加载用户。