好的,所以我碰到了一些我觉得很奇怪的东西,但看起来非常基本。请考虑以下事项:
>>> users = Usr.objects.filter(refresh=True)
>>> users
[<Usr: Usr object>, <Usr: Usr object>, <Usr: Usr object>, <Usr: Usr object>]
>>> Usr.objects.filter(refresh=True).update(refresh=False)
>>> users
[]
所以当调用update()
Django更新数据库中的行和以前加载的对象时?
update()
上的Django文档不讨论
答案 0 :(得分:0)
update()
不会影响已经获取的对象。
您获得空列表的原因:删除后访问users
会导致执行另一个查询。 (users
是QuerySet对象; Querysets are lazy
);你看到删除后的状态。
如果检索过滤器值并将其保存为序列对象,则会得到不同的结果。
例如,请尝试以下操作:
users = list(Usr.objects.filter(refresh=True))
print(users)
Usr.objects.filter(refresh=True).update(refresh=False)
print(users)