0

如何使模型字段从函数返回默认值?

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()
4

1 回答 1

1

文档中default

这可以是一个值或可调用对象。如果可调用,则每次创建新对象时都会调用它。

所以,你可以给它传递一个函数:

_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,请将其设置为字段的名称。

于 2013-07-14T06:53:26.627 回答