无法更新Django 1.9 BooleanField

时间:2016-05-20 18:45:54

标签: python django

我有以下型号

class UserProfile(models.Model):

    user = models.OneToOneField(User, related_name='profile')
    force_password_change = models.BooleanField(default=False)

由于某种原因,我根本无法更改BooleanField。我想这样做是在没有模型形式的视图中。这是我从Django命令行获得的输出

>>> new_user = User.objects.get(username="bob")
>>> new_user
<User: bob>
>>> type(new_user)
<class 'django.contrib.auth.models.User'>
>>> new_user.profile
<UserProfile: bob>
>>> type(new_user.profile)
<class 'accounts.models.UserProfile'>
>>> new_user.profile.force_password_change
False
>>> new_user.profile.force_password_change = True
>>> new_user.save()
>>> new_user.profile.force_password_change
False
>>>

那我在这里错过了什么?我确定这是愚蠢的,但任何帮助都会很棒。

更新:

更新个人资料字段时会出现同样的问题。

>>> new_user.profile.force_password_change
False
>>> new_user.profile.force_password_change = True
>>> new_user.profile.save()
>>> new_user.profile.force_password_change
False
>>>

更新2:

也试过这个:

>>>
>>> new_user.profile.force_password_change = True
>>> new_user.profile.save()
>>> new_user = User.objects.get(pk=new_user.pk)
>>> new_user.profile.force_password_change
False
>>>

我想我能提供的最后一点有用信息是我可以通过管理面板完全更改force_password_change字段。这就像我尝试user.profile.save()时没有发生保存操作?但是我没有收到任何我注意到的错误。

1 个答案:

答案 0 :(得分:1)

您是否尝试过直接保存UserProfile对象?

p = UserProfile.objects.get(user=new_user)
p.force_change_password = True
p.save()

print new_user.profile.force_change_password

请原谅我的简洁......我在手机上打字。