[Fixed]-How to limit query results with Django Rest filters


You can use Django Rest Framework pagination. The pagination_class LimitOffsetPagination give you the ability to limit the number of returned entries in a query_param.



In ListApiView Overwrite finalize_response function. I did not find any other inbuilt method or parameter to set limit on response data.

from rest_framework.generics import ListAPIView

class BoolQSearch(ListAPIView):
    queryset = Model1.objects.all()
    serializer_class = Model1Serializer

    def finalize_response(self, request, response, *args, **kwargs):
        response.data = response.data[:5]
        return super().finalize_response(request, response, *args, **kwargs)


You can extend or customize pagination classes available in drf

  class UserSpecificPagination(LimitOffsetPagination):
      def get_limit(self, request):
          if logic_met(request.user):
            self.max_limit = custom_limit
      return super(UserSpecificPagination, self).get_limit(request)

set the class as pagination_class in ListAPIView or DRF settings


you should use the pagination api from django-rest


look at the limit option


Leave a comment