首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django预取相关且存在

Django预取相关且存在
EN

Stack Overflow用户
提问于 2018-06-01 11:51:14
回答 2查看 1.8K关注 0票数 4

在查询具有多个prefetch_related关系的模型时,我使用了m2m:

代码语言:javascript
复制
qs = context.mymodel_set.prefetch_related('things1', 'things2', 'things3')

因此,当我这样做时,不需要执行额外的查询来获取things1,应该已经获取了它们:

代码语言:javascript
复制
r = list(qs)
r[0].things1.all()

但是如果我做r[0].things1.exists()呢?这会产生一个新的查询吗?还是会使用预取的信息?如果它生成一个新的查询,这是否意味着为了存在检查的目的而使用r[0].things1.all()更有效?

PS:缓存的信息与数据库在desync中,我不担心这个特定的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-01 12:39:38

这很容易为你自己check the queries that Django is running

当我尝试时,似乎obj.things.exists()在预取things时不会引起任何额外的查询。

票数 3
EN

Stack Overflow用户

发布于 2022-07-11 11:26:01

要只捕获与things1有关系的对象,可以在查询中这样做:

代码语言:javascript
复制
context.mymodel_set.prefetch_related(
   'things1', 'things2', 'things3'
).filter(
    things1__isnull=False
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50642806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档