2013-07-13 130 views
0

如何讓模型字段從函數返回默認值?Django模型列

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

有'default'字段選項。每個模型都會自動擁有一個對該模型唯一的「id」字段..你 – dm03514

+0

是的,但我需要從函數f()中添加值作爲默認值 – Xtal

+0

你可以覆蓋你的保存方法,如果記錄是新的,你可以擁有random_id設置爲'f()' – dm03514

回答

1

documentation for 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,請將其設置爲您的字段的名稱。