每個Django模型都有一個自動創建的默認主鍵id
。我想模型對象爲具有計算另一個屬性big_id
爲:
big_id = id * SOME_CONSTANT
有沒有一種簡單的方法在Django Model/Python類中創建派生屬性?
我想要訪問big_id
作爲model_obj.big_id
不具有列稱爲big_id
對應的數據庫表。
這可能嗎?
每個Django模型都有一個自動創建的默認主鍵id
。我想模型對象爲具有計算另一個屬性big_id
爲:
big_id = id * SOME_CONSTANT
有沒有一種簡單的方法在Django Model/Python類中創建派生屬性?
我想要訪問big_id
作爲model_obj.big_id
不具有列稱爲big_id
對應的數據庫表。
這可能嗎?
好,Django的模型實例只是Python對象,還是讓我一直所告知:P
這是我會怎麼做:
class MyModel(models.Model):
CONSTANT = 1234
id = models.AutoField(primary_key=True) # not really needed, but hey
@property
def big_id(self):
return self.pk * MyModel.CONSTANT
很明顯,你會如果您嘗試使用未保存的模型執行此操作,則會發生異常。您也可以預先計算big_id值,而不是在每次訪問時計算它。
class Person(models.Model):
x = 5
name = ..
email = ..
def _get_y(self):
if self.id:
return x * self.id
return None
y = property(_get_y)
你有兩個選擇,我能想到的現在:在你最好的選擇是定義在返回self.id模型的方法數據庫
謝謝!屬性是我正在尋找... – akv 2009-10-27 00:19:29