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

I.J*_*dze 7 python django python-3.x django-rest-framework drf-yasg

我正在尝试从swagger(使用drf-yasg)进行上传文件输入,但是当我使用MultiPartParser类时,它给了我以下错误:

drf_yasg.errors.SwaggerGenerationError: FileField is supported only in a formData Parameter or response Schema
Run Code Online (Sandbox Code Playgroud)

我的看法:

drf_yasg.errors.SwaggerGenerationError: FileField is supported only in a formData Parameter or response Schema
Run Code Online (Sandbox Code Playgroud)

我的序列化器:

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

    permission_classes = [IsAuthenticated]
    serializer_class = DoctorExperienceSerializer
Run Code Online (Sandbox Code Playgroud)

我也尝试过FormParser,但它仍然给我同样的错误。另外:FileUploadParser解析器但它的工作原理如下JsonParser

JPG*_*JPG 4

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

说到真正的问题,drf-yasg 的文档中有一个部分

如果您希望向新项目添加 Swagger/OpenAPI 支持,您可能需要看看 drf-spectaulous,它是一个积极维护的新库,它与该项目的大部分目标相同,同时使用 OpenAPI 3.0 模式。

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

这意味着该软件包drf-yasg不支持OAS3多个文件上传”功能。

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