首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-swagger嵌套序列化器,其只读字段未正确呈现

django-swagger嵌套序列化器,其只读字段未正确呈现
EN

Stack Overflow用户
提问于 2015-04-27 16:24:45
回答 2查看 2.2K关注 0票数 16

我正在使用django-rest框架构建一个API,并开始使用django-休息-昂首阔步作为文档。我有一个带有一些read_only字段的嵌套序列化程序,如下所示:

代码语言:javascript
复制
# this is the nested serializer
class Nested(serializers.Serializer):
    normal_field = serializers.CharField(help_text="normal")
    readonly_field = serializers.CharField(read_only=True,
                                           help_text="readonly")

# this is the parent one
class Parent(serializers.Serializer):
    nested_field = Nested()

在生成的文档中,页面的参数部分中的嵌套序列化器是用字段数据类型呈现的,没有给出有关其内容的提示,它们与其他字段一样。

现在您可以看到这个问题了,因为我想告诉用户,有一个只读字段不应该作为嵌套数据的一部分发送,但是我看不到这样做的方法。

理想的方法是在Data列中有一个模型描述,就像响应类 部分一样。

是否有适当的方法?

EN

回答 2

Stack Overflow用户

发布于 2019-12-10 21:09:07

1. of everything请使用杜鲁-雅斯格作为文档。

2. --您可以在我的存储库基尔皮中找到它的实现,并学习如何使用它。

3.,如果你在3.;有问题,请告诉我.

票数 0
EN

Stack Overflow用户

发布于 2022-11-25 07:50:13

尝试使用drf_yasg,Swagger会为API生成文档,但这不是绝对正确的!如果您想更正Swagger文档,可以这样做。您需要使用swagger_auto_schema装饰器。下面是示例代码:

代码语言:javascript
复制
from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema

class ProductSuspendView(CreateAPIView):

    @swagger_auto_schema(
        tags=['dashboard'],
        request_body=openapi.Schema(
            type=openapi.TYPE_OBJECT,
            properties={
                'id': openapi.Schema(
                    type=openapi.TYPE_INTEGER,
                    description='Id',
                ),
                'suspend_kinds': openapi.Schema(
                    type=openapi.TYPE_ARRAY,
                    items=openapi.Items(type=openapi.TYPE_INTEGER),
                    description='Array suspend (Inappropriate image: 1, Insufficient information: 2,  Bad language: 3) (suspend_kinds=[1,2])'
                ),
            }
        ),
        responses={
            status.HTTP_200_OK: SuccessResponseSerializer,
            status.HTTP_400_BAD_REQUEST: ErrorResponseSerializer
        }
    )
    def post(self, request, *args, **kwargs):
        """
        Suspend a product.
        """
        ...
        if success:
            return Response({'success': True}, status.HTTP_200_OK)

        return Response({'success': False}, status.HTTP_400_BAD_REQUEST)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29901131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档