Django模型字段默认来自模型方法

时间:2012-08-12 15:59:39

标签: python django model default

我想从模型方法中提供模型字段默认值。

我该怎么做?

当我尝试这段代码时

Class Person(models.Model):
    def create_id(self):
        return os.urandom(12).encode('hex')

    name = models.CharField(max_length = 255)
    id = models.CharField(max_length = 255,default = self.create_id)

我得到NameError:名字'self'未定义。

如果我删除'self',我知道'create_id'需要1个参数。

2 个答案:

答案 0 :(得分:9)

您可以像这样定义全局方法:

def create_id():
    return os.urandom(12).encode('hex')

Class Person(models.Model):
   name = models.CharField(max_length = 255)
   id = models.CharField(max_length = 255,default = create_id)

答案 1 :(得分:4)

我最终做到了这一点:(从两者中移除自我)

Class Person(models.Model):
    def create_id():
        return os.urandom(12).encode('hex')

    name = models.CharField(max_length = 255)
    id = models.CharField(max_length = 255,default = create_id)

它正在运作,但我不确定这是最佳还是正确的方式。