Django rest framework override метод save()

Когда я переопределяю метод save(), внутри вызывается метод create(), но когда я добавляю поле uuid, доступное только для чтения, поле не сериализуется. serializer.py

class AwsUploadFileSerializer(serializers.ModelSerializer):
    extract_file_name = serializers.CharField(source='extract_file.name', read_only=True)
    class Meta:
        model = ExtractAWSFile
        fields = [
            'uuid',
            'extract_file',
            'extract_file_name'
        ]
        extra_kwargs = {
            'extract_file': {'write_only': True}
        }

    def save(self, **kwargs):
        instance: ExtractAWSFile = super().create(self.validated_data)
        res = upload_file_to_aws(instance.extract_file.path)
        if not res:
            instance.extract_file.delete()
            instance.delete()
        return instance

ответ

{
    "extract_file_name": "tets3.jpg"
}

Я пытаюсь вызвать метод save() родительского класса, чтобы сериализовать поле uuid, но что-то не так с полем имени файла, которое я написал ранее, и оно принимает путь вместе с ним вместо того, чтобы просто отображать имя. serializer.py

class AwsUploadFileSerializer(serializers.ModelSerializer):
    extract_file_name = serializers.CharField(source='extract_file.name', read_only=True)

    class Meta:
        model = ExtractAWSFile
        fields = [
            'uuid',
            'extract_file',
            'extract_file_name'
        ]
        extra_kwargs = {
            'extract_file': {'write_only': True}
        }

    def save(self, **kwargs):
        instance = super().save(**kwargs)
        res = upload_file_to_aws(instance.extract_file.path)
        if not res:
            instance.extract_file.delete()
            instance.delete()
        return instance

ответ

{
    "uuid": "c4aea74e-3748-4c05-8d6c-2413b1eebcc6",
    "extract_file_name": "extractAWS/2022/10/08/tets3.jpg"
}

Почему так? Мне интересно, что я должен сделать после save(), чтобы правильно отобразить поле uuid

def save(self, **kwargs):
        res = upload_file_to_aws(instance.extract_file.path)
        if not res:
            instance.extract_file.delete()
            instance.delete()
            
        instance = super().save(**kwargs) #call the save method end of your code
Вернуться на верх