我正在尝试优化我的查询,但是prefetch_related坚持加入表并选择所有字段,即使我只需要关系表中的id列表。
您可以忽略第4个查询。这与问题无关。
相关代码:
class Contact(models.Model):
...
Groups = models.ManyToManyField(ContactGroup, related_name='contacts')
...
queryset = Contact.objects.all().prefetch_related('Groups')
答案 0 :(得分:16)
Django 1.7添加了Prefetch objects,可以自定义预取时使用的查询集。在这种情况下,您需要以下内容:
queryset = Contact.objects.all().prefetch_related(
Prefetch('Groups', queryset=Group.objects.all().only('id')))