我想創建GAE模型屬性的屬性。原因是在存儲它之前將值轉換爲大寫的情況。對於一個普通的Python類,我會做這樣的事情:在GAE數據存儲的模型中使用Property Builtin
Foo(db.Model):
def get_attr(self):
return self.something
def set_attr(self, value):
self.something = value.upper() if value != None else None
attr = property(get_attr, set_attr)
然而,GAE數據存儲有自己的物業類的概念,我看着documentation,似乎我可以覆蓋get_value_for_datastore(model_instance)
達到我的目的。儘管如此,我不知道model_instance
是什麼,以及如何從中提取相應的字段。
重寫GAE Property類是否提供getter/setter類功能的正確方法?如果是這樣,該怎麼辦?
補充:
一個壓倒一切的get_value_for_datastore
潛在的問題,我認爲是之前的對象放入數據存儲,可能不會被調用。因此,在存儲對象之前獲取屬性會產生不正確的值。
啊哈,我明白了 - 'get_value_for_datastore'在對象被放到數據存儲之前被稱爲**只是**(並且_doesn't_影響停留在內存中的實例 - 您需要從「返回」數據存儲看到「受影響」的實例)。但基本上你需要做_both _... – 2010-02-20 20:31:12