Django search_fields добавляет DUPLICATE левое внешнее соединение с таблицей устройств к запросу Django, так как оно имеет .annotate (devices_count = Count ('devices'))
Просмотр
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'))
Сначала этодобавление соединения для аннотации, а затем search_field также добавляет то же соединение снова, поскольку оно имеет поле 'devices__name', что приводит к неверным данным для appliance_count.
Как я могу ограничить добавление дублированного соединения, которое выполняет Djangoфильтры с использованием атрибута search_fields?