mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-12-05 01:04:11 +03:00
Enforce ordering only when queryset is not ordered
This commit is contained in:
parent
d692b87a2b
commit
45e66ec24e
|
|
@ -624,6 +624,7 @@ class CursorPagination(BasePagination):
|
||||||
(offset, reverse, current_position) = self.cursor
|
(offset, reverse, current_position) = self.cursor
|
||||||
|
|
||||||
# Cursor pagination always enforces an ordering.
|
# Cursor pagination always enforces an ordering.
|
||||||
|
if not queryset.ordered:
|
||||||
if reverse:
|
if reverse:
|
||||||
queryset = queryset.order_by(*_reverse_ordering(self.ordering))
|
queryset = queryset.order_by(*_reverse_ordering(self.ordering))
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -969,8 +969,9 @@ class TestCursorPagination(CursorPaginationTestsMixin):
|
||||||
self.created = idx
|
self.created = idx
|
||||||
|
|
||||||
class MockQuerySet:
|
class MockQuerySet:
|
||||||
def __init__(self, items):
|
def __init__(self, items, ordered=False):
|
||||||
self.items = items
|
self.items = items
|
||||||
|
self.ordered = ordered
|
||||||
|
|
||||||
def filter(self, created__gt=None, created__lt=None):
|
def filter(self, created__gt=None, created__lt=None):
|
||||||
if created__gt is not None:
|
if created__gt is not None:
|
||||||
|
|
@ -987,7 +988,7 @@ class TestCursorPagination(CursorPaginationTestsMixin):
|
||||||
|
|
||||||
def order_by(self, *ordering):
|
def order_by(self, *ordering):
|
||||||
if ordering[0].startswith('-'):
|
if ordering[0].startswith('-'):
|
||||||
return MockQuerySet(list(reversed(self.items)))
|
return MockQuerySet(list(reversed(self.items)), ordered=True)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __getitem__(self, sliced):
|
def __getitem__(self, sliced):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user