diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 4d5cc4c13a..8c32997bd8 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -298,7 +298,7 @@ def get_valid_fields(self, queryset, view, context=None): (field.name, field.verbose_name) for field in queryset.model._meta.fields ] valid_fields += [ - (key, key.title().split('__')) + (key, ' '.join(key.title().split('__'))) for key in queryset.query.annotations ] else: diff --git a/tests/test_filters.py b/tests/test_filters.py index 80cb0a481e..9b05e37f13 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -977,6 +977,20 @@ class OrderingListView(generics.ListAPIView): self.assertContains(response, 'verbose title') + def test_get_template_context_annotation_label(self): + class OrderingListView(generics.ListAPIView): + ordering_fields = '__all__' + serializer_class = OrderingFilterSerializer + queryset = OrderingFilterModel.objects.all().annotate( + models.Count("related")) + filter_backends = (filters.OrderingFilter,) + + request = factory.get('/', HTTP_ACCEPT='text/html') + view = OrderingListView.as_view() + response = view(request) + + self.assertContains(response, 'Related Count - ascending') + def test_ordering_with_overridden_get_serializer_class(self): class OrderingListView(generics.ListAPIView): queryset = OrderingFilterModel.objects.all()