2016-11-21 32 views
3

我的LabHours模型中有一个名为'used'的BooleanField,它的默认值为False(这应该是一个考勤系统),我想根据过滤器和顺序将它设置为True。即使我明确地设置这个字段为真,当我打印出它的值时,它仍然显示False。django过滤和顺序不能够修改字段?

这里是我的参考代码:

LabHours.objects.filter(used=False).order_by("endtime").first().used = True 
for hours in LabHours.objects.all(): 
    hours.save() 
    print hours.used 

控制台输出:

False 
False 
False 
False 
False 
False 
False 

它为何不把这个字段设置为True?

回答

2

在代码的第一行中的变化去未保存,然后你只是通过查询集循环和触发保存上没有变化模型实例。

你需要调用保存上使用您的突变状态模型实例:

obj = LabHours.objects.filter(used=False).order_by("endtime").first() 
obj.used = True 
obj.save() 
1

发生这种情况是因为您没有保存更新的值。

first = LabHours.objects.filter(used=False).order_by("endtime").first() 
first.used = True 
first.save() 
for hours in LabHours.objects.all(): 
    hours.save() 
    print hours.used