django prefetch_related 很多查询
Posted
技术标签:
【中文标题】django prefetch_related 很多查询【英文标题】:django prefetch_related many queries 【发布时间】:2015-02-15 04:17:02 【问题描述】:Django 1.7
我有一个模型:
class Model(models.Model):
tags = models.ManyToManyField(..)
当我执行Model.objects.prefetch_related()....
时,会发出许多单独的查询来获取标签,每个模型一个。
我预计会发生 2 个查询:1 个用于获取模型,另一个用于获取所有模型的标签。
怎么做?
已编辑:
我正在使用像 Model.objects.prefetch_related('tags').raw_query(..)
这样的原始查询
【问题讨论】:
【参考方案1】:你应该指定一个字段名来预取:
Model.objects.prefetch_related('tags')
如果您使用queryset.raw()
方法,则prefetch_related()
逻辑不起作用。
【讨论】:
嗯,你用的是哪个版本的django?在 django 1.7.4 中,您的代码会引发异常:AttributeError: 'QuerySet' object has no attribute 'raw_query'
你可以使用raw()
(不是raw_query()
)吗?如果这种情况prefetch_related()
将不起作用。显示完整代码,可能是其他解决方案,而不是raw()
调用。以上是关于django prefetch_related 很多查询的主要内容,如果未能解决你的问题,请参考以下文章
详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
Django:prefetch_related() 是不是遵循反向关系查找?