mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-18 04:02:35 +03:00
Fix: not working rename with ('name', 'origin name') pattern
This commit is contained in:
parent
8dd4250d02
commit
ed112a1b83
|
@ -4,14 +4,13 @@ returned by list views.
|
|||
"""
|
||||
import operator
|
||||
import warnings
|
||||
from functools import reduce
|
||||
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.db import models
|
||||
from django.db.models.constants import LOOKUP_SEP
|
||||
from django.template import loader
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from functools import reduce
|
||||
|
||||
from rest_framework import RemovedInDRF317Warning
|
||||
from rest_framework.compat import coreapi, coreschema, distinct
|
||||
|
@ -198,13 +197,25 @@ class OrderingFilter(BaseFilterBackend):
|
|||
params = request.query_params.get(self.ordering_param)
|
||||
if params:
|
||||
fields = [param.strip() for param in params.split(',')]
|
||||
ordering = self.remove_invalid_fields(queryset, fields, view, request)
|
||||
valid_filed_names = self.remove_invalid_fields(queryset, fields, view, request)
|
||||
ordering = self.convert_to_origin_filed_name(request, queryset, view, valid_filed_names)
|
||||
if ordering:
|
||||
return ordering
|
||||
|
||||
# No ordering was included, or all the ordering fields were invalid
|
||||
return self.get_default_ordering(view)
|
||||
|
||||
def convert_to_origin_filed_name(self, request, queryset, view, ordering):
|
||||
valid_fields = dict(self.get_valid_fields(queryset, view, {'request': request}))
|
||||
converted_fields = []
|
||||
for field in ordering:
|
||||
if field.startswith('-'):
|
||||
converted_fields.append('-' + valid_fields[field[1:]])
|
||||
else:
|
||||
converted_fields.append(valid_fields[field])
|
||||
|
||||
return converted_fields
|
||||
|
||||
def get_default_ordering(self, view):
|
||||
ordering = getattr(view, 'ordering', None)
|
||||
if isinstance(ordering, str):
|
||||
|
|
Loading…
Reference in New Issue
Block a user