django过滤器和顺序由于无法修改字段?

时间:2016-11-21 18:54:16

标签: python django

我有一个名为' 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?

2 个答案:

答案 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