我正在尝试优化我的查询,但 prefetch_related 坚持加入表并选择所有字段,即使我只需要关系表中的 id 列表。
您可以忽略第四个查询。它与问题无关。
相关代码:
class Contact(models.Model):
...
Groups = models.ManyToManyField(ContactGroup, related_name='contacts')
...
queryset = Contact.objects.all().prefetch_related('Groups')
最佳答案
添加了 Django 1.7 Prefetch objects这使您可以自定义预取时使用的查询集。在这种情况下,你会想要这样的:
queryset = Contact.objects.all().prefetch_related(
Prefetch('Groups', queryset=Group.objects.all().only('id')))
关于django prefetch_related id only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18935186/