#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