Как добавить диапазон чисел элементов на страницу в пользовательской разбивке на страницы django rest framework

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

Я создал некоторые сериализованные данные, используя django rest framework. Я нахожусь в процессе создания пользовательской разбивки на страницы, поскольку существует много данных, которые сериализуются. Мне удалось добавить требуемую пару ключ-значение, необходимую в пользовательской разбивке на страницы. Для параметра page_size установлено значение 200.

Итак, в настоящее время он отображается следующим образом :

 {
    "totalPages": 11,
    "totalData": 2065,
    "currentPage": 2,
    "nextPage": "http://localhost:8000/cluster/37/tasks?page=3",
    "previousPage": "http://localhost:8000/cluster/37/tasks",
    "results": [...]
}
  

Я хочу также отобразить дополнительные данные в пользовательской разбивке на страницы, я хочу отобразить диапазон начальных данных ( firstDataNumber ) и конечных данных ( lastDataNumber ) на странице. Например, на странице 1 :

 {
    "totalPages": 11,
    "totalData": 2065,
    "currentPage": 1,
    "firstDataNumber" : 1, #first data on page
    "lastDataNumber" : 200, #last data on page
...
}
  

то же самое для страницы 2, которая должна быть :

 {
    "totalPages": 11,
    "totalData": 2065,
    "currentPage": 2,
    "firstDataNumber" : 201, #first data on page
    "lastDataNumber" : 400, #last data on page
...
}
  

Как мне добиться такой вставки диапазона номеров данных в пользовательской разбивке на страницы? Спасибо.

Пока это мой код для пользовательской разбивки на страницы :

 class LargeResultsSetPagination(PageNumberPagination):
    page_size = 200
    page_size_query_param = 'page_size'
    max_page_size = 100

    def get_paginated_response(self, data):
        return Response(OrderedDict([
             ('totalPages', self.page.paginator.num_pages),
             ('totalData', self.page.paginator.count),
             ('currentPage', self.page.number),
             ('nextPage', self.get_next_link()),
             ('previousPage', self.get_previous_link()),
             ('results', data)
         ]))
  

Ответ №1:

На основе документов, к которым вы можете получить доступ self.page.start_index() и self.page.end_index()

Документы здесь:https://docs.djangoproject.com/en/3.1/ref/paginator/#django.core.paginator.Page.start_index

Комментарии:

1. Спасибо @Kyell! На самом деле это был просто вопрос просмотра документации, лол.

2. Да, документация или даже исходный код, если хотите. lol