У меня есть простой сериализатор.
class MySerializer(serializers.Serializer):
file = serializers.FileField()
Основная проблема заключается в том, что он вызывает ошибку проверки, даже если Я предоставил файл сериализатору .Представление вернет сообщение о том, что данные неверны.Такое поведение кажется неправильным.Файл, который я ясно передаю serialzier, волшебным образом исчезает, что приводит к ошибке проверки.
class MyView (APIView):
permission_classes = ()
parser_classes = (MultiPartParser,)
def post(self, request):
print(request.data)
# <QueryDict: {'file': [<InMemoryUploadedFile: some_file.png (image/png)>]}>
serializer = MySerializer(data=request.data)
serializer.is_valid(raise_exception=True)
...
Ответы конечной точки:
{
"file": [
"This field can not be null."
]
}
Это поведение странно для меня.В документации сказано, что request.data
содержит как file
, так и non-file
объект.Мы можем даже видеть это в моем print
.Вопрос в том, почему мой serialzier не может этим воспользоваться?Этот файл волшебным образом исчезает.
Я использую этот сериализатор на мой взгляд:
class MyView(APIView):
permission_classes = ()
parser_classes = (MultiPartParser,)
def post(self, request):
print(request.data)
# <QueryDict: {'file': [<InMemoryUploadedFile: some_file.png (image/png)>]}>
serializer = MySerializer(data=request.data)
serializer.is_valid()
print(serializer.data)
# {'file': None}
После небольшого тестирования я вижу, что, хотя я передаю данные в сериализатор, который содержит файл.Но после проверки serializer.data
он говорит, что file
- это None
.