От documentation for default
:
Это может быть значение или вызываемый объект. Если он вызывается, он будет вызываться каждый раз при создании нового объекта.
Таким образом, вы можете передать его функции:
_random_id = models.CharField(max_length=18, default=f)
Q
это имя встроенной в Джанго, поэтому его лучше не использовать его для вашей модели.
Далее
@property
def random_id(self):
return self._random_id
Это только служит синтаксический сахар, потому что вы можете обратиться к _random_id
поле непосредственно из экземпляра модели:
foo = Q()
foo._random_id
Таким образом, вы должны рассмотреть возможность удаления этого свойства полностью; и если вам нужно random_id
, укажите его как имя своего поля.
есть опция поля по умолчанию. Каждая модель автоматически будет иметь поле 'id', которое является уникальным для этой модели .. вы – dm03514
да, но мне нужно добавить значение из функции f() по умолчанию – Xtal
Вы можете переопределить свой mathod сохранения, и если запись будет новой, вы можете random_id установлен в 'f()' – dm03514