繁体   English   中英

Django rest 框架 drf-yasg swagger ListField 序列化程序的多个文件上传错误

[英]Django rest framework drf-yasg swagger multiple file upload error for ListField serializer

我正在尝试从swagger (使用drf-yasg )输入上传文件,但是当我使用MultiPartParser class 时,出现以下错误:

drf_yasg.errors.SwaggerGenerationError: FileField is supported only in a formData Parameter or response Schema

我的看法:

class AddExperience(generics.CreateAPIView):
    parser_classes = [MultiPartParser]

    permission_classes = [IsAuthenticated]
    serializer_class = DoctorExperienceSerializer

我的序列化器:

class DoctorExperienceSerializer(serializers.Serializer):
    diploma = serializers.ListField(
        child=serializers.FileField(allow_empty_file=False)
    )
    education = serializers.CharField(max_length=1000)
    work_experience = serializers.CharField(max_length=1000)

我也试过FormParser但它仍然给我同样的错误。 另外: FileUploadParser解析器,但它的工作方式类似于JsonParser

OpenAPISchema ( OAS ) 2 不支持多文件上传(参见 issue #254 ); OAS 3支持它(您可以在实时 swagger 编辑器上使用此 YML 规范参见此结果))。

谈到真正的问题, drf-yasg 的文档中有一节

如果您希望将 Swagger/OpenAPI 支持添加到新项目,您可能想看看 drf-spectacular,这是一个积极维护的新库,它共享该项目的大部分目标,同时使用 OpenAPI 3.0 模式。

OpenAPI 3.0 在可描述的 API 类型上提供了比 2.0 更大的灵活性。 drf-yasg 不太可能很快(如果有的话)获得对 OpenAPI 3.0 的支持。

这意味着 package drf-yasg不支持OAS3 ,因此,它不支持“多文件上传”功能。

您可以考虑从drf-yasg迁移到drf-spectacular 但是,还要注意, drf-spectacular以不同的方式处理 FileUpload。

暂无
暂无

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

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