Mil*_*ano 3 python django django-rest-framework drf-yasg drf-spectacular
编辑:这个问题最初是在使用时发布的,yasg但我切换到了spectacular所以两种解决方案都可以。
我很好奇是否有办法告诉参数yasg或spectacular向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'
Run Code Online (Sandbox Code Playgroud)
筛选
class CountyFilter(FilterSet):
class Meta:
model = County
fields = {
'name': ['icontains'],
'parent': ['exact']
}
Run Code Online (Sandbox Code Playgroud)
串行器
class CountySerializer(serializers.ModelSerializer):
class Meta:
model = County
fields = ['id', 'name']
Run Code Online (Sandbox Code Playgroud)
看法
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)
Run Code Online (Sandbox Code Playgroud)
这是自动生成的招摇:
是否可以在不编写自定义方案的情况下做到这一点?
小智 5
这个答案是壮观的。帮助文本必须附加在某处。如果您想将其放在过滤器上,则需要显式设置过滤器字段才能附加帮助文本:
class ProductFilter(FilterSet):
number_id = NumberFilter(help_text='some injected help text')
class Meta:
model = Product
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用以下命令覆盖检测到的参数
@extend_schema_view(
list=extend_schema(parameters=[
OpenApiParameter(name='name__icontains', description="some help text")
])
)
class AddressCountyAutocompleteView(ListAPIView):
Run Code Online (Sandbox Code Playgroud)
恕我直言,第一选择会更稳健。
| 归档时间: |
|
| 查看次数: |
3267 次 |
| 最近记录: |