Drf-yasg - описание для параметров фильтра

Мне интересно, есть ли способ сказать yasg добавить описание к django-filter параметрам.

Я хочу сообщить разработчикам, что поле parent является Country моделью pk.

Модель

class County(AddressModel):
    parent = models.ForeignKey('Country', verbose_name='Krajina', related_name='counties', on_delete=models.PROTECT, help_text='Krajina')

    class Meta:
        verbose_name = 'Kraj'
        verbose_name_plural = 'Kraje'

Filter

class CountyFilter(FilterSet):
    class Meta:
        model = County
        fields = {
            'name': ['icontains'],
            'parent': ['exact']
        }

Сериализатор

class CountySerializer(serializers.ModelSerializer):
    class Meta:
        model = County
        fields = ['id', 'name']

Вид

class AddressCountyAutocompleteView(ListAPIView):
    serializer_class = CountySerializer
    filter_backends = [DjangoFilterBackend]
    filterset_class = CountyFilter
    queryset = County.objects.all()
    pagination_class = AddressAutocompletePagination

    def list(self, request, *args, **kwargs):
        return super().list(request, *args, **kwargs)

Это автоматически созданный swagger:

enter image description here

Возможно ли это сделать без написания пользовательской схемы?

Этот ответ предназначен для зрелищности. Текст справки должен быть где-то прикреплен. Если вы хотите, чтобы он был в фильтре, вам нужно явно установить поле фильтра, чтобы прикрепить текст справки:

class ProductFilter(FilterSet):
    number_id = NumberFilter(help_text='some injected help text')

    class Meta:
        model = Product

альтернативно вы можете переопределить обнаруженный параметр с помощью

@extend_schema_view(
    list=extend_schema(parameters=[
        OpenApiParameter(name='name__icontains', description="some help text")
    ])
)
class AddressCountyAutocompleteView(ListAPIView):

первый вариант был бы более надежным, имхо.

Вернуться на верх