. .
from rest_framework import pagination
class CustomPageNumberPagination(pagination.PageNumberPagination):
"""Custom page number pagination."""
page_size = 30
max_page_size = 10000
page_size_query_param = 'page_size'
def get_page_size(self, request):
"""Get page size."""
try:
view = request.parser_context['view']
if view.action in [
'custom_page_size_view_1',
'custom_page_size_view_2',
'custom_page_size_view_n',
]:
return self.max_page_size
except:
pass
return super(CustomPageNumberPagination, self).get_page_size(request)
from rest_framework.viewsets import ModelViewSet
from rest_framework.decorators import list_route
from .pagination import CustomPageNumberPagination
class MyView(ModelViewSet):
pagination_class = CustomPageNumberPagination
@list_route()
def custom_page_size_view_1(self, request):
"""Custom page size view 1"""
@list_route()
def custom_page_size_view_2(self, request):
"""Custom page size view 2"""
@list_route()
def custom_page_size_view_3(self, request):
"""Custom page size view 3"""