使用Django,第一次訪問時如何生成字段的值?然後將該值存儲在該字段上。如何在第一次訪問字段時生成字段的值?
對我來說,這是一個形象,但它可以是任何東西,我想。我需要的是一個函數,它在字段被訪問或包裝訪問之前運行,並在檢查產生它的空值時,或類似的東西。
使用Django,第一次訪問時如何生成字段的值?然後將該值存儲在該字段上。如何在第一次訪問字段時生成字段的值?
對我來說,這是一個形象,但它可以是任何東西,我想。我需要的是一個函數,它在字段被訪問或包裝訪問之前運行,並在檢查產生它的空值時,或類似的東西。
還有的是一個getters and setters票在djangoproject好幾年,現在開放,但沒有運氣。我見過的情況三種常見的方法你描述:
把你的模型字段以不同的名字,說image_field
,寫一個getter/setter方法對(使用python的property
語法)在你的對象稱爲image
那個查詢該字段。這將用於你的函數的隨意使用,但是來自框架內的任何調用顯然將忽略你的getter/setter。
創建自己的custom field子類,如果可能的工作魔術給你。
覆蓋另存爲ozanonay建議。
是否有任何理由,你爲什麼不能這樣做,當對象被保存?因爲那將是十分容易通過重寫保存方法在相關模型來完成,例如:
def save(self, force_insert=False, force_update=False):
if not self.image:
self.image = foo
super(RelevantModel, self).save(force_insert, force_update)
當然,如果是你的時間之間的相關差異的對象第一次保存,首次訪問特定字段的時間,那麼這並不能解決您的問題。
有兩個原因,我不想這樣做:1)這是生成的數據,它應該可以刪除這些數據,並把它按需再生(如果生成算法進行了改進,或這些數據沒有備份)。 – Pablo 2009-04-08 18:40:39