Пагинация в 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
вместо необработанных данных.