#django #django-rest-framework
Вопрос:
Я хочу создать представление для создания поста.
Существуют различные функции для написания статьи, в частности, функция загрузки файлов. Итак, я использую составную часть и переопределяю функцию создания в сериализаторе. как показано ниже:
- сначала создайте экземпляр.
- сохраните файл в созданном экземпляре.
но когда я сохраняю, возникает ошибка:
Ошибка типа: требуется байтообразный объект, а не «Временный загруженный файл».
но не знаю, как преобразовать «TemporaryUploadedFile» в «байтоподобный объект».
api_view>
class PostCreate(generics.CreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
# parser_classes = (FileUploadParser,)
# parser_classes = (FormParser, MultiPartParser)
parser_classes = (MultiPartParser,)
# def put(self, request, format = None):
# post_files = request.data['post_files']
def post(self, request, *args, **kwargs):
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Сериализатор>
class PostSerializer(serializers.ModelSerializer):
post_files = serializers.FileField(required=False)
def create(self, request):
print("@@@@@request")
print(request)
post_files = request.pop("post_files")
print("@@@ post_files.path : " post_files.temporary_file_path())
print("@@@ post_files.name : " str(post_files))
instance = Post.objects.create(**request)
# files = open(post_files.temporary_file_path(), "wb ")
# for chunk in post_files.chunks():
# files.write(chunk)
# files.close()
instance.post_files.save(str(post_files), ContentFile(files), save=True)
return instance