0

编辑:这个问题最初是在使用时发布的,yasg但我切换到了,spectacular所以两种解决方案都可以。

我很好奇是否有办法告诉yasgspectaculardjango-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'

筛选

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)

这是自动生成的招摇:

在此处输入图像描述

是否可以在不编写自定义方案的情况下做到这一点?

4

1 回答 1

0

这个答案很壮观。帮助文本必须附加在某处。如果您想在过滤器上使用它,您需要明确设置过滤器字段以附加帮助文本:

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):

第一选择将是更强大的恕我直言。

于 2022-02-23T18:04:23.033 回答