I try to implement some basic filtering on my GenericAPIView, like this:
view:
class OperatorList(generics.GenericAPIView): permission_classes = (permissions.IsAuthenticated, IsAdmin) filter_class = OperatorsFilter serializer_class = OperatorSerializer def get_queryset(self): queryset = self.request.user.operators.all() def get(self, request, *args, **kwargs): serializer = OperatorSerializer(instance=self.get_queryset(), many=True, context=self.get_serializer_context()) return Response(serializer.data)serializer:
class OperatorSerializer(serializers.ModelSerializer): class Meta: model = Operator fields = ['id', 'name', 'created', ]filter set:
import rest_framework_filters from rest_framework import filters from .models import Operator class OperatorFilter(filters.FilterSet): created = rest_framework_filters.DateTimeField(lookup_type='gte') class Meta: model = Operator fields = ('name', 'created', )
The issue is that filters are displayed in browsable API, but 'Created' is not a DateTimeWidget, but a simple input.
Also, applying filter takes no effect, and I still have to catch request.query_params in get_queryset() (I ama trying to use filter backend to avoid this in first turn).
Does anybody have any suggestions?