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 другим способом .

Вернуться на верх