我想创建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