Skip to content

Commit 0053ad4

Browse files
committed
Return queryset's ordering from .get_ordering()
1 parent 24b2652 commit 0053ad4

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

rest_framework/pagination.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ def paginate_queryset(self, queryset, request, view=None):
615615
return None
616616

617617
self.base_url = request.build_absolute_uri()
618-
self.ordering = self.get_ordering()
618+
self.ordering = self.get_ordering(queryset)
619619

620620
self.cursor = self.decode_cursor(request)
621621
if self.cursor is None:
@@ -802,10 +802,21 @@ def get_previous_link(self):
802802
cursor = Cursor(offset=offset, reverse=True, position=position)
803803
return self.encode_cursor(cursor)
804804

805-
def get_ordering(self):
805+
def get_ordering(self, queryset):
806806
"""
807807
Return a tuple of strings, that may be used in an `order_by` method.
808808
"""
809+
# Return the ordering value from the queryset if it has one.
810+
if queryset.ordered:
811+
ordering = []
812+
813+
for expr in queryset.query.order_by:
814+
field_name = expr.expression.name
815+
descending = expr.descending
816+
ordering.append(f"{'-' if descending else ''}{field_name}")
817+
818+
return ordering
819+
809820
ordering = self.ordering
810821

811822
assert ordering is not None, (

0 commit comments

Comments
 (0)