尝试在django模型中设置BooleanField值时出现奇怪的问题

hor*_*ora 4 django django-models django-queryset

我试图在我的一个模型中更改BooleanField的值,但Django不会让我.这是相关的代码:

query = MyModel.objects.filter(name='example').filter(boolField=False)
print query[0].boolField
query[0].boolField = True
query[0].save()
print query[0].boolField
Run Code Online (Sandbox Code Playgroud)

这令人惊讶地印刷:

False
False
Run Code Online (Sandbox Code Playgroud)

知道为什么= True不坚持?提前致谢!

编辑:这修复了它:

query = MyModel.objects.get(name='example', boolField=False)
query.boolField = True
query.save()
Run Code Online (Sandbox Code Playgroud)

您似乎无法更改筛选过的查询中的字段?

Dan*_*man 7

这不是过滤问题,而是切片.每次切片查询集时,Django都会为您提供不同的对象:

f = MyModel.objects.all()[0]
f.id       # 1
id(f)      # 4326035152
ff = MyModel.objects.all()[0]
ff.id      # 1
id(ff)     # 4326035344
Run Code Online (Sandbox Code Playgroud)

这里f并ff指相同的底层数据库行,但不同的实际对象实例.因此,在您的示例中,您设置布尔值的实例与您尝试保存的实例不同.