Django viewset аннотирует в подзапросе на основе поля filterset

Кажется, что это должно быть обычным случаем использования, но я не могу найти ответ в Интернете.

Я пытаюсь аннотировать подсчет на основе запроса, который фильтруется с помощью поля filterset в DRF.

class SurveyViewset(viewsets.ModelViewSet):

    entries = models.SurveyEntry.objects.filter(
        survey=OuterRef("id")
    ).order_by().annotate(
        count=Func(F('id'), function='Count')
    ).values('count')

    queryset = models.Survey.objects.annotate(
        total_entries=Subquery(entries)
    ).all().order_by("id")
    serializer_class = serializers.SurveySerializer

    filter_backends = (
        SurveyQueryParamsValidator,
        CaseInsensitiveOrderingFilter,
        django_filters.DjangoFilterBackend,
        SearchFilter,
    )

    filterset_fields = {
        "surveyaddressgroup": ("exact",),
    }

У меня есть опросы, и я хочу подсчитать количество SurveyEntry на основе определенной группы адресов.

Т.е. я задаю опрос в нескольких торговых центрах, и я хочу увидеть результаты, когда я выбираю только 1 конкретный центр для показа. На данный момент я получаю общее количество независимо от фильтра основного запроса.

Как заставить подзапрос учитывать выбор набора фильтров?

Вернуться на верх