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')
Вернуться на верх