Передача значений в дочерний класс, который наследуется от PageNumberPagination из drf
Мне нужно использовать PageNumberPagination (из drf) во многих моих представлениях, я использовал определение ustom class, наследующего PageNumberPagination в каждом из моих views.py, например -
from rest_framework.pagination import PageNumberPagination
class CustonmPageNumberPagination(PageNumberPagination):
page_size = 3
page_query_param = "pageNumber"
class MyViewSet(viewsets.ModelViewSet):
serializer_class = MySerializer
queryset = MyModel.objects.all()
pagination_class = CustonmPageNumberPagination
Теперь я пытаюсь определить вспомогательный класс в файле на уровне проекта и вызывать этот класс всякий раз, когда это необходимо.
Итак, мой файл custompagination.py имеет вид -
from rest_framework.pagination import PageNumberPagination
class CustomPageNumberPagination(PageNumberPagination):
page_size = 3
page_query_param = "pageNumber"
и затем я могу использовать его как -
from backend.pagination import CustomPageNumberPagination
class MyViewSet(viewsets.ModelViewSet):
serializer_class = MySerializer
queryset = MyModel.objects.all()
pagination_class = CustonmPageNumberPagination
Но я также хочу передавать значение page_size моему CustomPageNumberPagination всякий раз, когда класс вызывается из моих представлений, чтобы получить точный размер страницы для каждого из моих представлений.
Я понимаю, что класс принимает аргументы в методе init, поэтому когда я пытаюсь что-то вроде
class CustomPageNumberPagination(PageNumberPagination):
def __init__(self, count):
self.count = count
page_size = 3
page_query_param = "pageNumber"
и при попытке вызвать этот класс
pagination_class = CustomPageNumberPagination("gh")
выдает ошибку 'CustomPageNumberPagination' object is not callable.
Помогите, как я могу передать значения?
Класс pagination инстанцируется внутри свойства paginator, определенного внутри GenericAPIView
class MyViewSet(viewsets.ModelViewSet):
serializer_class = MySerializer
queryset = MyModel.objects.all()
@property
def paginator(self):
return CustomPageNumberPagination(4)