【问题标题】:django prefetch_related many queriesdjango prefetch_related 很多查询
【发布时间】: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(..) 这样的原始查询

【问题讨论】:

    标签: django django-models


    【解决方案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() 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2022-11-18
    • 2012-10-07
    相关资源
    最近更新 更多