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



我正试图从swagger(使用drf-yasg(进行上传文件输入,但当我使用MultiPartParser类时,会出现以下错误:

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不支持多文件上传(请参阅问题#254(;但OAS 3支持它(您可以在实时swaggerediter上使用此YML规范(请参阅此结果((。

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

如果你想在一个新项目中添加Swagger/OpenAPI支持,你可能想看看drf-splant,它是一个积极维护的新库,在使用OpenAPI 3.0模式时共享该项目的大部分目标。

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

这意味着包drf-yasg不支持OAS3,因此,它将不支持"多文件上传">功能。

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

最新更新