У меня есть класс CustomPagination, который может искать данные поста и возвращать страницу, содержащую эти данные.Это работает.Однако при работе с кучей данных это может вызвать проблемы с производительностью.Мне нужно реализовать более чистый способ поиска данных поста без перебора страниц и воздерживаться от использования таких констант, как число = 1
pagination.py
class CustomPagination(PageNumberPagination):
def paginate_queryset(self, queryset, request, view=None):
page_size = self.get_page_size(request)
if not page_size:
return None
paginator = self.django_paginator_class(queryset, page_size)
page_number = request.query_params.get(self.page_query_param, 1)
if page_number in self.last_page_strings:
page_number = paginator.num_pages
id = request.query_params.get('id', None)
if id:
post = Post.objects.get(pk=id)
number = 1
while number <= paginator.num_pages:
self.page = paginator.page(number)
if post in list(self.page):
break
number += 1
else:
self.page = paginator.page(page_number)
if paginator.num_pages > 1 and self.template is not None:
self.display_page_controls = True
self.request = request
return list(self.page)
def get_paginated_response(self, data):
return Response({
'next': self.get_next_link(),
'previous': self.get_previous_link(),
'count': self.page.paginator.count,
'total_pages': self.page.paginator.num_pages,
'results': data
})