Как получить автоматически заполняемые значения (значения по умолчанию) в методе создания сериализатора в django?
У меня есть такая модель:
class Post(BaseModel):
post_user_id = models.CharField(max_length=500, unique=True, default=create_uid)
create_uid генерирует уникальный идентификатор
serializer:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
def create(self, validated_data):
print(validated_data['post_user_id'])
return super().create(validated_data)
Для каждого созданного поста будет автоматически генерироваться post_user_id, и пользователь не будет публиковать post_user_id
На print(validated_data['post_user_id'])
я хочу вывести сгенерированный номер.
Но я получаю ошибку
KeyError
Значения по умолчанию присваиваются при создании экземпляра. Вы пытаетесь вывести значение до этого. Если вы хотите получить id в функции craete, вы можете вывести его после вызова super.create(). Не забудьте вернуть объект позже.
def create(self, validated_data):
obj= super().create(validated_data)
print(obj.post_user_id)
return obj