From 43a07e23bd52541eb8fe5eeea64e22b4615163bf Mon Sep 17 00:00:00 2001 From: ali Date: Sat, 5 Aug 2023 03:11:31 +0330 Subject: [PATCH] change term_valid def --- rest_framework/filters.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 0840074f0..b4fd747d6 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -300,7 +300,7 @@ class OrderingFilter(BaseFilterBackend): (field.name, field.verbose_name) for field in queryset.model._meta.fields ] valid_fields += [ - (key, key.title().split('__')) + (key, key) for key in queryset.query.annotations ] else: @@ -315,13 +315,19 @@ class OrderingFilter(BaseFilterBackend): valid_fields = {item[1]: item[0] for item in self.get_valid_fields(queryset, view, {'request': request})} def term_valid(term): + negative = "" if term.startswith("-"): + negative = "-" term = term[1:] - return valid_fields.get(term) is not None + + if valid_fields.get(term): + return negative + valid_fields.get(term) + + elif term in valid_fields.values(): + return negative + term return [ - valid_fields.get(term) if not term.startswith("-") else '-' + valid_fields.get(term[1:]) - for term in fields if term_valid(term) + term_valid(term) for term in fields if term_valid(term) ] def filter_queryset(self, request, queryset, view):