Accept both field.source and field_name with valid_fields=None

This commit is contained in:
Daniel Hahler 2016-02-16 23:42:51 +01:00
parent 79dad012b0
commit 666e2d98ea

View File

@ -232,11 +232,15 @@ class OrderingFilter(BaseFilterBackend):
msg = ("Cannot use %s on a view which does not have either a " msg = ("Cannot use %s on a view which does not have either a "
"'serializer_class' or 'ordering_fields' attribute.") "'serializer_class' or 'ordering_fields' attribute.")
raise ImproperlyConfigured(msg % self.__class__.__name__) raise ImproperlyConfigured(msg % self.__class__.__name__)
valid_fields = [ valid_fields = []
(field.source or field_name, field.label) for field_name, field in serializer_class().fields.items():
for field_name, field in serializer_class().fields.items() if getattr(field, 'write_only', False) or field.source == '*':
if not getattr(field, 'write_only', False) and not 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__': elif valid_fields == '__all__':
# View explicitly allows filtering on any model field # View explicitly allows filtering on any model field
valid_fields = [ valid_fields = [