【发布时间】:2015-06-23 22:47:36
【问题描述】:
我正在使用 django-parler(django-hvad 的衍生物)进行翻译。在管理中显示具有多对多关系的外键字段时,django 为每个字段运行一个查询:
因此,当有 300 个服务时,查询数量就会一样多。
我认为 get_queryset 上的 prefetch_related 不适用于mantomany 过滤器/列表,如果我错了,请纠正我:
def get_queryset(self, request):
return super(DoctorAdmin, self).get_queryset(request).prefetch_related('translations', 'services__translations')
对查询数量没有影响。在 parler 上启用缓存(正如作者建议的 here)也无济于事,因为不会重复相同的查询,但这些过滤器上的每个项目都会在查询翻译项目时被调用(ID 每次都不同)。所以,我正在寻找的是内部过滤器上的 select_related/prefetch_related 。同时,我也会审核您的应用程序,以防您已经解决了此类问题。
【问题讨论】:
标签: python django django-admin django-hvad django-parler