我试图从 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
:
1条答案
按热度按时间yrwegjxp1#
OpenAPISchema
(OAS
)2不支持多个文件上传(参见问题#254);但是OAS 3
支持它(您可以在live swagger editer(see this result)上使用this YML spec)。说到真实的的问题,在drf-yasg的文档中有一个部分,
如果您希望将Swagger/OpenAPI支持添加到新项目中,您可能需要查看drf-spectacular,它是一个积极维护的新库,在使用OpenAPI 3.0模式时与本项目的大部分目标相同。
OpenAPI 3.0在API类型方面提供了比2.0更多的灵活性。drf-yasg不太可能很快获得对OpenAPI 3.0的支持。
这意味着包
drf-yasg
不支持OAS3
,因此它不支持 “多文件上传” 功能。您可以考虑从
drf-yasg
迁移到drf-spectacular
。但是,还要注意,drf-spectacular
也以不同的方式处理FileUpload。