Django模型检索相同的结果

Cla*_*man 7 python django orm django-models

我在SQL数据库上有一个django模型TestModel.

每当我这样做

TestModel.objects.all()
Run Code Online (Sandbox Code Playgroud)

如果我从同一个进程多次运行它,我似乎得到相同的结果.我通过手动删除(不使用任何django原语)测试构建模型的表中的一行,查询仍然返回相同的结果,即使显然删除后应该有更少的对象.

有没有某种缓存机制,每次我想检索对象时django都没有进入数据库?

如果有,有没有办法我仍然可以强制django在每个查询上转到数据库,最好不要编写原始SQL查询?

我还应该指定通过重新启动进程,模型再次返回正确的对象,我不再看到已删除的对象,但如果我再删除一些问题,则会再次出现问题.

dan*_*era 1

这是因为您的数据库隔离级别是可重复读。在 django shell 中,所有请求都包含在单个事务中。

已编辑

你可以在你的 shell 中尝试:

from django.db import transaction
with transaction.autocommit():
    t = TestModel.objects.all()
    ...
Run Code Online (Sandbox Code Playgroud)