Django rest framework drf-yasg swagger ошибка загрузки нескольких файлов для сериализатора ListField
Я пытаюсь сделать ввод файла upload из 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
serializer:
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
поддерживает ее (вы можете использовать эту YML спецификацию на живом swagger editer ( см. этот результат)).
Переходим к реальному вопросу, есть раздел в документации drf-yasg,
Если вы хотите добавить поддержку Swagger/OpenAPI в новый проект, вам стоит обратить внимание на drf-spectacular, которая является активно поддерживаемой новой библиотекой, разделяющей большинство целей этого проекта и работающей со схемами OpenAPI 3.0.
.OpenAPI 3.0 обеспечивает гораздо большую гибкость, чем 2.0, в типах API, которые могут быть описаны. drf-yasg вряд ли скоро, если вообще когда-либо, получит поддержку OpenAPI 3.0.
Это означает, что пакет drf-yasg
не поддерживает OAS3
и, следовательно, не будет поддерживать функцию "загрузки нескольких файлов" .
Вы можете рассмотреть возможность перехода с drf-yasg
на drf-spectacular
. Но также обратите внимание, что drf-spectacular
также работает с FileUpload другим способом .