mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-08 06:14:47 +03:00
Made sure the OrderingFilter relies on Field.verbose_name.
This commit is contained in:
parent
22695ec8a7
commit
dff5f80592
|
@ -240,8 +240,7 @@ class OrderingFilter(BaseFilterBackend):
|
||||||
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 = [
|
||||||
(field.name, getattr(field, 'label', field.name.title()))
|
(field.name, field.verbose_name) for field in queryset.model._meta.fields
|
||||||
for field in queryset.model._meta.fields
|
|
||||||
]
|
]
|
||||||
valid_fields += [
|
valid_fields += [
|
||||||
(key, key.title().split('__'))
|
(key, key.title().split('__'))
|
||||||
|
|
|
@ -499,7 +499,7 @@ class SearchFilterM2MTests(TestCase):
|
||||||
|
|
||||||
|
|
||||||
class OrderingFilterModel(models.Model):
|
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)
|
text = models.CharField(max_length=100)
|
||||||
|
|
||||||
|
|
||||||
|
@ -741,6 +741,19 @@ class OrderingFilterTests(TestCase):
|
||||||
|
|
||||||
reload_module(filters)
|
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):
|
class SensitiveOrderingFilterModel(models.Model):
|
||||||
username = models.CharField(max_length=20)
|
username = models.CharField(max_length=20)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user