Фильтровать запросы с помощью Django-Filter, но возвращать пользовательский JSON

Я хочу иметь возможность передавать запрос через конечную точку (например, /api/generate-team/?rarity=Gold), фильтровать набор запросов и затем возвращать пользовательский JSON на основе некоторых вычислений, которые происходят.

По сути, запрос будет содержать отфильтрованные данные из модели PlayerProfile. Затем данные из PlayerProfile вычисляются, и возвращается пользовательский JSON-ответ.

У меня уже есть FilterSet, созданный для другого представления, который содержит точно такие же фильтры, которые нам нужны, поэтому я хотел бы использовать его повторно.

Вот сжатая версия фильтра (этот фильтр отлично работает с другим видом, для которого я его использую):

class PlayerProfileFilter(django_filters.FilterSet):
    rarity = CharInFilter(field_name='rarity', lookup_expr='in')
    card_id = CharInFilter(field_name='card_id', lookup_expr='in')
    max_overall = django_filters.CharFilter(field_name='overall', lookup_expr='lte')
 ...

class Meta:
    model = PlayerProfile

Вот что я пытаюсь сделать с помощью представления:

class GenerateRosterView(some-kinda-viewset):
    queryset = PlayerProfile.objects.all()
    filter_backends = (django_filters.DjangoFilterBackend, filters.SearchFilter,)
    filterset_class = PlayerProfileFilter

    def do_some_calculations_to_filtered_query_set():
        doSomething(queryset)
        return {"calculations": 1}

У меня проблемы с передачей фильтрованного запроса в функцию и возвращением пользовательского JSON-ответа.

Я делаю это так, надеюсь, это поможет вам -

def get_queryset(self):
    fromUrl == self.request.GET.get('rarity') # get queryparameter from url
    if fromUrl is None:
        #queryset = anyModel.objects.all()
        queryset = anyModel.objects.none()
    else:
        queryset = anyModel.objects.filter(anyData = fromUrl)
     return queryset  
Вернуться на верх