23

我正在尝试优化我的查询,但 prefetch_related 坚持加入表并选择所有字段,即使我只需要关系表中的 id 列表。

查询

您可以忽略第四个查询。它与问题无关。

相关代码:

class Contact(models.Model):
    ...
    Groups = models.ManyToManyField(ContactGroup, related_name='contacts')
    ...

queryset = Contact.objects.all().prefetch_related('Groups')
4

1 回答 1

39

Django 1.7 添加了Prefetch 对象,允许您自定义预取时使用的查询集。在这种情况下,您需要类似:

queryset = Contact.objects.all().prefetch_related(
    Prefetch('Groups', queryset=Group.objects.all().only('id')))
于 2014-10-24T15:01:45.280 回答