Использовать django-filter во ViewSet
Как можно использовать django-filter во viewsets.ViewSet? (использовать modelViewSet или ApiView итд нельзя) Что нужно переопределить/изменить? Я понимаю что ViewSet дает все писать с нуля, CRUD у меня на нем получилось сделать без проблем, а вот прикрутить фильтрацию без ModelViewSet вообще не получается. Фильтрация по многим параметрам в том числе и с вычислениями, djanfo-filter с этим справляется(уже проверено) но не работает на ViewSet :( Вот как я себе это представляю:
class MortgageViewSet(viewsets.ViewSet):
"""
# C этим кодом и ModelsViewSet работает как надо, но нужно юзать просто ViewSet
queryset = Mortgage.objects.all()
serializer_class = FiltersSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = ProductFilter
filterset_fields = ('__all__')
"""
def list(self, request):
if len(self.request.query_params) <= 0:
#Если url не содержит параметров - возвращаем НЕ фильтрованный кверисет
else:
#Если в url хоть 1 параметр есть - возвращаем фильтрованный кверисет
Можно ли из функции заставить работать filterset_class например как в ModelViewSet? Если да - как это сделать?
в документации должно быть описано
думаю можно попробовать определить класс фильтра и использовать его в view
import django_filters
class ProductFilter(django_filters.FilterSet):
class Meta:
model = Product
fields = '__all__'
class MortgageViewSet(viewsets.ViewSet):
def list(self, request):
filte = ProductFilter(request.GET, queryset=Product.objects.all())
...