Я пытался динамически фильтровать набор запросов в Django, используя библиотеку Django-filters в DRF, но фильтры отправляют ответ точно так же, как и запрос, то есть, если я выбираю режим = передача, ответ равен
{
"data": {
"mode": "transfer"
}
}
filterset_class определяется в представлениях, и ему передается набор запросов вместе с типом запроса.
views.py
from .filters import DataFilter
def get(self, request):
query_set = ModelName.objects.all()
queryset_filter = DataFilter(
request.GET, queryset=query_set)
return Response({"data": queryset_filter.data}, status=status.HTTP_200_OK)
фильтры.py
from django_filters import rest_framework as filters
from .models import ModelName
from common.models import MODE_CHOICES
class DataFilter(filters.FilterSet):
currency = filters.ModelMultipleChoiceFilter(lookup_expr='iexact')
coin_type = filters.ModelMultipleChoiceFilter(lookup_expr='iexact')
mode = filters.ModelChoiceFilter(
lookup_expr='iexact', choices=MODE_CHOICES)
max_amount = filters.NumberFilter(
field_name='price', lookup_expr='gt')
min_amount = filters.NumberFilter(
field_name='amount', lookup_expr='lt')
class Meta:
model = ModelName
fields = ('currency', 'coin_type', 'mode',
'max_amount', 'min_amount')
Документация по django-фильтрам предполагает, что бэкэнд-фильтр django можно использовать по умолчанию, добавив его в DEFAULT_FILTER_BACKENDS.Есть какая-то конфигурация, которую мне не хватает или что-то