我有以下型号
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()时没有发生保存操作?但是我没有收到任何我注意到的错误。
答案 0 :(得分:1)
您是否尝试过直接保存UserProfile对象?
p = UserProfile.objects.get(user=new_user)
p.force_change_password = True
p.save()
print new_user.profile.force_change_password
请原谅我的简洁......我在手机上打字。