django-filters - field_labels not working for OrderingFilter

There is a model:

class Calendar(models.Model):
    ...
    vendor_code = models.TextField()
    ...

FilterSet class:

from django_filters import OrderingFilter
from django_filters.rest_framework import FilterSet, DjangoFilterBackend

class CalendarFilter(FilterSet):

    ordering = OrderingFilter(
        fields=(
            ('vendor_code', 'vendor_code'),
        ),
        field_labels={
            'vendor_code': 'Vendor code',
        }
    )

    class Meta:
        model = Calendar
        fields = ['vendor_code']

The view:

class CalendarsView(mixins.ListModelMixin, GenericViewSet):
    ...
    filter_backends = (DjangoFilterBackend,)
    filterset_class = CalendarFilter

I expected that if define field_labels param the label Vendor code would appear in swagger but there is only ordering without any description:

enter image description here

I need this in order to frontend developers could see them.

What am I doing wrong?

Upvotes: 0

Views: 226

Answers (1)

Pourya Mansouri
Pourya Mansouri

Reputation: 192

OrderingFilter is used in View like this:

class CalendarsView(mixins.ListModelMixin, GenericViewSet):
    ...
    filter_backends = [DjangoFilterBackend, filters.SearchFilter,filters.OrderingFilter]
    filter_class = CalendarFilter
    filter_backends = [filters.OrderingFilter]

and in CalendarFilter used field:

class CalendarFilter(FilterSet):
    vendor_code = filters.CharFilter(field_name='vendor_code', lookup_expr='icontains', label='vendor_code')

Upvotes: 2

Related Questions