我有以下模型
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
force_password_change = models.BooleanField(default=False)
出于某种原因,我根本无法更改 BooleanField。我想在没有模型形式的 View 中执行此操作。这是我从 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() 时,好像保存操作没有发生?但我没有收到任何我注意到的错误。
最佳答案
您是否尝试过直接保存 UserProfile 对象?
p = UserProfile.objects.get(user=new_user)
p.force_change_password = True
p.save()
print new_user.profile.force_change_password
请原谅我的简短...我正在手机上输入此内容。
关于python - 无法更新 Django 1.9 BooleanField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37353818/