当您覆盖列表时如何添加过滤器后端?

rec*_*hie 3 django-rest-framework

如果我覆盖列表,过滤器后端将不起作用。如果我覆盖列表定义,如何应用我的过滤器?

class CircuitViewSet(viewsets.ModelViewSet):
    queryset = Circuit.objects.all()
    serializer_class = CircuitSerializer
    filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter,)
    filter_class = CircuitFilter

    def list(self, request):
        queryset = Circuit.objects.all()
        serializer = CircuitSerializer(queryset, many=True, context={'request': request})
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

rec*_*hie 6

class CircuitViewSet(viewsets.ModelViewSet):
    queryset = Circuit.objects.all()
    serializer_class = CircuitSerializer
    filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter,)
    filter_class = CircuitFilter

    def list(self, request):
        # with filter
        queryset = self.filter_queryset(self.get_queryset())

        # pagination
        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)