Django REST Framework Serializer - как сохранить InMemoryUploadedFile на диск?
В моем Django RestAPI я могу загрузить изображение, вместо сохранения этого изображения в ImageField, на которое ссылается база данных, я хочу просто сохранить его на диск без дальнейшей обработки. В настоящее время мой код выглядит следующим образом:
class UserAvatarUpdateSerializer(ClearNullSerializer, serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
avatar = serializers.ImageField(write_only=True, required=True)
class Meta:
model = get_user_model()
fields = ('id', 'user', 'avatar',)
read_only_fields = ('id', 'user')
def save(self, **kwargs):
new_avatar = self.validated_data['avatar']
directory = (str(MEDIA_ROOT) + "tmp/")
filename = str(uuid.uuid4())
new_avatar.save(os.path.splitext((directory + filename))[0] + '.png', optimize=True, format='png')
Но я сталкиваюсь с:
AttributeError: объект 'InMemoryUploadedFile' не имеет атрибута 'save'
Итак, мой вопрос в том, как я могу сохранить InMemoryUploadedFile на диск?
Ниже приведены следующие действия:
...
def save(self, **kwargs):
new_avatar = self.validated_data['avatar']
new_avatar = Image.open(new_avatar)
directory = (str(MEDIA_ROOT) + "user_avatar/")
filename = str(uuid.uuid4())
new_avatar.save(os.path.splitext((directory + filename))[0] + '.webp', optimize=True, format='webp')