加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 编程开发 > Python > 正文

如何判断是否已评估Django QuerySet?

发布时间:2021-01-24 09:09:02 所属栏目:Python 来源:互联网
导读:我正在手工创建一个Django查询集,并希望只使用Django ORM来读取生成的querset.query SQL本身,而无需访问我的数据库. 我知道Django quersets是懒惰的,我看到触发查询集的所有操作都被评估: https://docs.djangoproject.com/en/1.10/ref/models/querysets/#whe

我正在手工创建一个Django查询集,并希望只使用Django ORM来读取生成的querset.query SQL本身,而无需访问我的数据库.

我知道Django quersets是懒惰的,我看到触发查询集的所有操作都被评估:

https://docs.djangoproject.com/en/1.10/ref/models/querysets/#when-querysets-are-evaluated

但是……如果我只是想验证我的代码是纯粹构建查询集内容但是不是在不经意间评估和命中我的数据库呢?在没有实际评估它的情况下,我可以用来验证它没有被评估的查询集对象上是否有任何属性?

解决方法

对于使用select返回模型实例列表的查询集,如基本过滤器或排除,如果尚未评估查询集,则_result_cache属性为None,如果有,则为结果列表.关于非公共属性的常见警告适用.

对于其他查询集(计数,删除等),我不确定有一种简单的方法.也许看你的数据库日志,或者在DEBUG模式下运行并检查connection.queries,如下所述:
https://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is-running

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读