I am having problem with django rest framework pagination. I have set pagination in settings like –
JavaScript
x
3
1
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
2
'PAGE_SIZE': 1
3
Below is my viewset.
JavaScript
1
4
1
class HobbyCategoryViewSet(viewsets.ModelViewSet):
2
serializer_class = HobbyCategorySerializer
3
queryset = UserHobbyCategory.objects.all()
4
I want to set different page size for this viewset. I have tried setting page_size and Paginate_by class variables but list is paginated according to PAGE_SIZE defined in settings. Any idea where I am wrong ?
Advertisement
Answer
I fixed this by creating custom pagination class. and setting desired pagesize in class. I have used this class as pagination_class in my viewset.
JavaScript
1
10
10
1
from rest_framework import pagination
2
3
class ExamplePagination(pagination.PageNumberPagination):
4
page_size = 2
5
6
class HobbyCategoryViewSet(viewsets.ModelViewSet):
7
serializer_class = HobbyCategorySerializer
8
queryset = UserHobbyCategory.objects.all()
9
pagination_class=ExamplePagination
10
I am not sure if there is any easier way for this. this one worked for me. But I think its not good to create new class just to change page_size.
Edit – simple solution is set it like
JavaScript
1
2
1
pagination.PageNumberPagination.page_size = 100
2
in ViewSet.
JavaScript
1
5
1
class HobbyCategoryViewSet(viewsets.ModelViewSet):
2
serializer_class = HobbyCategorySerializer
3
queryset = UserHobbyCategory.objects.all()
4
pagination.PageNumberPagination.page_size = 100
5