Django更新方法更新已加载的对象?

时间:2014-03-06 04:34:48

标签: django

好的,所以我碰到了一些我觉得很奇怪的东西,但看起来非常基本。请考虑以下事项:

>>> 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文档不讨论

1 个答案:

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