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)
您似乎无法更改筛选过的查询中的字段?
这不是过滤问题,而是切片.每次切片查询集时,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指相同的底层数据库行,但不同的实际对象实例.因此,在您的示例中,您设置布尔值的实例与您尝试保存的实例不同.