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

yos*_*ssi 10 python django default model

我想从模型方法中给出模型字段默认值.

我怎样才能做到这一点 ?

当我尝试这个代码

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)
Run Code Online (Sandbox Code Playgroud)

我得到NameError:名称'self'未定义.

如果我删除'self'我得到'create_id'需要1个参数.

Roh*_*han 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)
Run Code Online (Sandbox Code Playgroud)


yos*_*ssi 5

我最终这样做了:(从两者中删除自我)

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)
Run Code Online (Sandbox Code Playgroud)

它正在工作,但我不确定这是最好的还是正确的方法。

  • 这个*看起来*不错。我也想知道这是否是一个好的*实践。* (3认同)