From 666e2d98ea338117f5a787e1ca92ac9cfd2f9fb2 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Tue, 16 Feb 2016 23:42:51 +0100 Subject: [PATCH] Accept both field.source and field_name with valid_fields=None --- rest_framework/filters.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 42e77d910..97baf07b6 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -232,11 +232,15 @@ class OrderingFilter(BaseFilterBackend): msg = ("Cannot use %s on a view which does not have either a " "'serializer_class' or 'ordering_fields' attribute.") raise ImproperlyConfigured(msg % self.__class__.__name__) - valid_fields = [ - (field.source or field_name, field.label) - for field_name, field in serializer_class().fields.items() - if not getattr(field, 'write_only', False) and not field.source == '*' - ] + valid_fields = [] + for field_name, field in serializer_class().fields.items(): + if getattr(field, 'write_only', False) or field.source == '*': + continue + if field.source: + valid_fields += [(field.source, field.label), + (field_name, field.label)] + else: + valid_fields += (field_name, field.label) elif valid_fields == '__all__': # View explicitly allows filtering on any model field valid_fields = [