11

モデルメソッドからモデルフィールドのデフォルト値を与えたいです。

どうやってやるの ?

このコードを試すと

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: name 'self' is not defined が発生します。

「self」を削除すると、「create_id」には 1 つのパラメーターが必要であることがわかります。

4

2 に答える 2

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)
于 2012-08-12T16:02:36.137 に答える
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)

それは機能していますが、これが最善の方法であるか正しい方法であるかはわかりません。

于 2012-08-13T07:32:18.337 に答える