Как установить динамический размер страницы в DRF PageNumberPagination - PullRequest
0 голосов
/ 14 декабря 2018

В классе PostByFilters я получаю limit в качестве параметра url, и я хочу присвоить значение в page_size в классе BasicSizePagination.Я пытался использовать глобальную переменную вне двух классов, но это не сработало.Есть ли в любом случае повторная инициализация BasicSizePagination в PostByFilters, чтобы я мог напрямую присвоить значение в PostByFilters?

class BasicSizePagination(pagination.PageNumberPagination):
    page_size = 10

class PostByFilters(ListAPIView):
    serializer_class = serializers.PostSerializer
    pagination_class = BasicSizePagination

    def get_queryset(self):

        limit = self.request.query_params.get('limit', None)
        ...

        return queryset

1 Ответ

0 голосов
/ 14 декабря 2018

Создайте новый класс Pagination из PageNumberPagination и переопределите атрибут page_size_query_param, как показано ниже

from rest_framework.pagination import PageNumberPagination


class CustomPageNumberPagination(PageNumberPagination):
    page_size_query_param = 'size'  # items per page

Следовательно, ваш URL будет /api/foo/?size=10, это возвратит 10 элементов на страницу.Если в URL-адресе не указан аргумент size, DRF будет использовать settings.PAGE_SIZE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...