【发布时间】:2019-06-18 03:50:24
【问题描述】:
Django search_fields 将 DUPLICATE 左外连接与设备表添加到 Django 查询中,因为它具有 .annotate(appliances_count=Count('appliances'))
查看
class AppliancePoolViewSet(VneCommonViewSet):
serializer_class = vne_serializers.AppliancePoolSerializer
search_fields = ('pk', 'name', 'notes', 'appliances__name')
# filter appliance pools by customer
def get_queryset(self):
customer = getattr(self.request.user, 'customer', None)
if not customer:
return models.AppliancePool.objects.none()
return models.AppliancePool.objects.filter(
customer=1).prefetch_related('appliances'
).annotate(appliance_count=Count('appliances'))
首先它为 annotate 添加连接,然后 search_field 也再次添加相同的连接,因为它具有字段“appliances__name”,这导致 Appliance_count 的数据不正确。
如何限制 Django 过滤器使用 search_fields 属性完成的重复连接的添加?
【问题讨论】:
标签: django django-rest-framework django-queryset