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 конкретный центр для показа. На данный момент я получаю общее количество независимо от фильтра основного запроса.
Как заставить подзапрос учитывать выбор набора фильтров?