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

您可以忽略第四个查询。这和这个问题无关。
相关守则:
class Contact(models.Model):
...
Groups = models.ManyToManyField(ContactGroup, related_name='contacts')
...
queryset = Contact.objects.all().prefetch_related('Groups')发布于 2014-10-24 15:01:45
Django 1.7添加了Prefetch objects,它允许您自定义预取时使用的查询集。在这种情况下,你会想要这样的东西:
queryset = Contact.objects.all().prefetch_related(
Prefetch('Groups', queryset=Group.objects.all().only('id')))https://stackoverflow.com/questions/18935186
复制相似问题