Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Made sure the OrderingFilter relies on Field.verbose_name.
  • Loading branch information
charettes committed Mar 10, 2016
commit dff5f805921fb6790d453601ea533fa053ab413f
3 changes: 1 addition & 2 deletions rest_framework/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,7 @@ def get_valid_fields(self, queryset, view):
elif valid_fields == '__all__':
# View explicitly allows filtering on any model field
valid_fields = [
(field.name, getattr(field, 'label', field.name.title()))
for field in queryset.model._meta.fields
(field.name, field.verbose_name) for field in queryset.model._meta.fields
]
valid_fields += [
(key, key.title().split('__'))
Expand Down
15 changes: 14 additions & 1 deletion tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,7 @@ class SearchListView(generics.ListAPIView):


class OrderingFilterModel(models.Model):
title = models.CharField(max_length=20)
title = models.CharField(max_length=20, verbose_name='verbose title')
text = models.CharField(max_length=100)


Expand Down Expand Up @@ -741,6 +741,19 @@ class OrderingListView(generics.ListAPIView):

reload_module(filters)

def test_get_template_context(self):
class OrderingListView(generics.ListAPIView):
ordering_fields = '__all__'
serializer_class = OrderingFilterSerializer
queryset = OrderingFilterModel.objects.all()
filter_backends = (filters.OrderingFilter,)

request = factory.get('/', {'ordering': 'title'}, HTTP_ACCEPT='text/html')
view = OrderingListView.as_view()
response = view(request)

self.assertContains(response, 'verbose title')


class SensitiveOrderingFilterModel(models.Model):
username = models.CharField(max_length=20)
Expand Down