[英]Django - drf-yasg setting request_body in @swagger_auto_schema to reduced version of serializer on @api_view
[英]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.