如何让模型字段从函数返回默认值?
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 :(得分:1)
这可以是值或可调用对象。如果可调用,则每次创建新对象时都会调用它。
所以,你可以传递一个函数:
_random_id = models.CharField(max_length=18, default=f)
Q
是django中内置的名称,因此最好不要将它用于您的模型。
此外,
@property
def random_id(self):
return self._random_id
这只是作为语法糖,因为您可以直接从模型实例引用_random_id
字段:
foo = Q()
foo._random_id
所以你应该考虑完全删除这个属性;如果您需要random_id
,请将其设置为您的字段名称。