Пагинация в django rest framework не работает

Я написал CustomPagination из drf в отдельном файле в моем проекте, который выглядит следующим образом.

class ProductPageNumberPagination(PageNumberPagination):
    page_size = 1


class CustomPagination(PageNumberPagination):
    def get_paginated_response(self, data):
        return Response({
            'links': {
                'next': self.get_next_link(),
                'previous': self.get_previous_link()
            },
            'count': self.page.paginator.count,
            'page_size' : 15,
            'results': data
        })

Теперь я наследую его в своем представлении следующим образом:

class CouponView(APIView,CustomPagination):
    permission_classes = [AllowAny]
    # pagination_class = CustomPagination


    def get(self,request,pk = None,*args,**kwargs):

        id = pk
        if id is not None:
            abc = Coupons.objects.get(id=id)
            serializer = CouponSerializer(abc)
            return serializer.data
        else:
            abc = Coupons.objects.all()           
            serializer = CouponSerializer(abc,many=True)
            return Response(serializer.data,status=200)

Однако, приведенный выше код не работает. Если бы я импортировал стандартный PageNumberPagination, он бы работал, но почему наследование моего пользовательского класса не работает - вот в чем мой вопрос. Похоже, что наследоваться может только класс по умолчанию, но не пользовательский класс.

Попробуйте вернуть self.get_paginated_response() вместо Response, например, так:

class CouponView(APIView,CustomPagination):
    permission_classes = [AllowAny]
    # pagination_class = CustomPagination


    def get(self,request,pk = None,*args,**kwargs):

        id = pk
        if id is not None:
            abc = Coupons.objects.get(id=id)
            serializer = CouponSerializer(abc)
            return Response(serializer.data, status=200)
        else:
            abc = Coupons.objects.all()           
            serializer = CouponSerializer(abc,many=True)
            return self.get_paginated_response(serializer.data)

И я думаю, что он должен возвращать Response в блоке if вместо необработанных данных.

Вернуться на верх