django prefetch_related id only

标签 django django-models django-queryset

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

queries

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

相关代码:

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/

相关文章:

django - 在 Django 中使用 Contrib.Auth 生成登录和注册表单

django - 为 Managed=False 模型添加 Django 管理页面

python - Django 通过字段选择对字段中的唯一项目进行计数并按父字段进行分组

python - 多对多关系 : Querying for Objects with a Single Value

python - django:如何在 ManyToManyField(通过)相关模型中的字段上对查询集进行排序

python - 属性错误: 'BoxesView' object has no attribute 'object_list'

python - 为什么我的 Python Django 日志文件为空,而我的控制台日志却不是?

Django:删除多对多的一侧时没有 m2m_changed 信号?

python - Django REST 框架外键和过滤

Django 和编写包含大量连接的查询