Ignore any invalidly formed query parameters for OrderingFilter. by vimarshc · Pull Request #5131 · encode/django-rest-framework (original) (raw)
Closes #4989.
For using ordering filters, parameters are added to the URL in the following manner and the output is the listed in the increasing order of the passed parameter.
http://example.com/api/users?ordering=username
For decreasing order, the following URL is used:
http://example.com/api/users?ordering=-username
If multiple hyphens are added, it should be treated as an invalid ordering parameter and should be discarded. The failing testcase's error traceback is as follows:
tests/test_filters.py:778: in test_incorrecturl_ordering
response = view(request)
../venv-test/lib/python2.7/site-packages/django/views/decorators/csrf.py:58: in wrapped_view
return view_func(*args, **kwargs)
../venv-test/lib/python2.7/site-packages/django/views/generic/base.py:68: in view
return self.dispatch(request, *args, **kwargs)
rest_framework/views.py:489: in dispatch
response = self.handle_exception(exc)
rest_framework/views.py:449: in handle_exception
self.raise_uncaught_exception(exc)
rest_framework/views.py:486: in dispatch
response = handler(request, *args, **kwargs)
rest_framework/generics.py:201: in get
return self.list(request, *args, **kwargs)
rest_framework/mixins.py:40: in list
queryset = self.filter_queryset(self.get_queryset())
rest_framework/generics.py:152: in filter_queryset
queryset = backend().filter_queryset(self.request, queryset, self)
rest_framework/filters.py:277: in filter_queryset
return queryset.order_by(*ordering)
../venv-test/lib/python2.7/site-packages/django/db/models/query.py:950: in order_by
obj.query.add_ordering(*field_names)
../venv-test/lib/python2.7/site-packages/django/db/models/sql/query.py:1691: in add_ordering
raise FieldError('Invalid order_by arguments: %s' % errors)
E FieldError: Invalid order_by arguments: [u'--text']