Django prefetch 相关且存在

Django prefetch related and exists

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

qs = context.mymodel_set.prefetch_related('things1', 'things2', 'things3')

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

r = list(qs)
r[0].things1.all()

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

PS:缓存信息与数据库不同步,我并不担心这个问题。

自己 check the queries that Django is running 很容易。

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