我有一個模型:如何在運行時計算Django模型字段?
class Person (models.Model):
name = models.CharField()
birthday = models.DateField()
age = models.IntegerField()
我要讓age
場表現得像一個屬性:
def get_age (self):
return (datetime.datetime.now() - self.birthday).days // 365
age = property (get_age)
,但在同一時間,我需要age
成爲一個真正的現場,這樣我就可以找到它在Person._meta.fields
,並給它分配屬性:age.help_text = "Age of the person"
等
很明顯,我不能只是重寫Person.save()
方法來計算和存儲age
在數據庫中,因爲它不可避免地會在以後出錯(實際上,它根本不應該存儲在數據庫中)。
實際上,我現在不需要安裝人員,但一個很好的解決方案必須具有設置功能。
Django有可能嗎?或者對我的問題有更多pythonic和djangoic的方法?
爲什麼重寫save方法不起作用? – 2010-04-02 19:47:58
因爲下次我們得到一個模型實例可能是錯誤的。這是一個簡單的例子,我實際上有更復雜的領域,其價值觀變化不可預測,依賴於其他幾個因素。 – 2010-04-03 17:18:58