我有一个名为' used'的BooleanField。在我的LabHours模型中,其默认值为False(这应该是一个考勤系统),我想根据过滤器和排序将其设置为True。即使我明确地将此字段设置为true,但当我打印出其值时,它仍会显示False。
以下是我的参考代码:
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?
答案 0 :(得分:2)
代码第一行的更改未保存,然后您只是循环遍历查询集并触发保存模型实例而不进行任何更改。
您需要使用您变异状态的模型实例调用save:
obj = LabHours.objects.filter(used=False).order_by("endtime").first()
obj.used = True
obj.save()
答案 1 :(得分: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