仅限django prefetch_related id

时间:2013-09-21 16:57:03

标签: django django-models django-queryset

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

queries

您可以忽略第4个查询。这与问题无关。

相关代码:

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

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

1 个答案:

答案 0 :(得分:16)

Django 1.7添加了Prefetch objects,可以自定义预取时使用的查询集。在这种情况下,您需要以下内容:

queryset = Contact.objects.all().prefetch_related(
    Prefetch('Groups', queryset=Group.objects.all().only('id')))