繁体   English   中英

drf-yasg/drf-spectacular - 过滤器参数的描述

[英]drf-yasg/drf-spectacular - description for filter parameters

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

我很好奇是否有办法告诉yasgspectaculardjango-filter参数添加描述。

我想告诉开发人员, parent字段是Country model pk

Model

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)

这是自动生成的 swagger:

在此处输入图像描述

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

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

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

恕我直言,第一选择会更强大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM