2013-07-13 2 views
0

Как я могу создать поле модели для возврата значения по умолчанию из функции?Диаграмма модели Django

class Q(models.Model): 
    _random_id = models.CharField(max_length=18) 

    @property 
    def random_id(self): 
     return self._random_id 

    @random_id.setter 
    def random_id(self): 
     self._random_id = f() 
+0

есть опция поля по умолчанию. Каждая модель автоматически будет иметь поле 'id', которое является уникальным для этой модели .. вы – dm03514

+0

да, но мне нужно добавить значение из функции f() по умолчанию – Xtal

+0

Вы можете переопределить свой mathod сохранения, и если запись будет новой, вы можете random_id установлен в 'f()' – dm03514

ответ

1

От 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, укажите его как имя своего поля.

Смежные вопросы