mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-10 19:56:59 +03:00
Merge pull request #3147 from tomchristie/uploadcare-cursor-limits
Add `get_page_size` hook to `CursorPagination`
This commit is contained in:
commit
9c952dcfe9
|
@ -455,7 +455,8 @@ class CursorPagination(BasePagination):
|
|||
template = 'rest_framework/pagination/previous_and_next.html'
|
||||
|
||||
def paginate_queryset(self, queryset, request, view=None):
|
||||
if self.page_size is None:
|
||||
page_size = self.get_page_size(request)
|
||||
if not page_size:
|
||||
return None
|
||||
|
||||
self.base_url = request.build_absolute_uri()
|
||||
|
@ -490,8 +491,8 @@ class CursorPagination(BasePagination):
|
|||
# If we have an offset cursor then offset the entire page by that amount.
|
||||
# We also always fetch an extra item in order to determine if there is a
|
||||
# page following on from this one.
|
||||
results = list(queryset[offset:offset + self.page_size + 1])
|
||||
self.page = list(results[:self.page_size])
|
||||
results = list(queryset[offset:offset + page_size + 1])
|
||||
self.page = list(results[:page_size])
|
||||
|
||||
# Determine the position of the final item following the page.
|
||||
if len(results) > len(self.page):
|
||||
|
@ -530,6 +531,9 @@ class CursorPagination(BasePagination):
|
|||
|
||||
return self.page
|
||||
|
||||
def get_page_size(self, request):
|
||||
return self.page_size
|
||||
|
||||
def get_next_link(self):
|
||||
if not self.has_next:
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue
Block a user