drf-spectacular icon indicating copy to clipboard operation
drf-spectacular copied to clipboard

Add support for displaying ordering fields

Open Headmaster11 opened this issue 2 years ago • 3 comments

class SomeViewSet(mixins.ListModelMixin, GenericViewSet):
    queryset = SomeModel.objects.all()
    filter_backends = (filters.OrderingFilter,)
    ordering_fields = ("field1", "field2")

    @extend_schema(
        parameters=[
            OpenApiParameter(
                name="ordering",
                description=f'Supports sorting by {" ".join(str(x) for x in ordering_fields)}. Use - to filter backwards',
            )
        ]
    )
    def list(self, request, *args, **kwargs):
        return super().list(request, *args, **kwargs)

without extend schema decorator, description for ordering is Which field to use when ordering the results. which is not very informative. Maybe it's better to have list of supported fields?

Headmaster11 avatar Jul 09 '22 09:07 Headmaster11

Hi @Headmaster11, that is a good point. The default actually comes out of DRF:

https://github.com/encode/django-rest-framework/blob/71e6c30034a1dd35a39ca74f86c371713e762c79/rest_framework/filters.py#L322

So we may either fix it upstream or introduce an override (OpenApiFilterExtension) on our side.

tfranzel avatar Jul 09 '22 10:07 tfranzel