原来Expando和PolyModel类没有key参数

标签:Google App Engine

今天遇到个奇怪的问题,创建实体时设置key老失败,提示:
ReservedWordError: Cannot define property using reserved word 'key'. If you would like to use this name in the datastore consider using a different name like key_ and adding name='key' to the parameter list of the property definition.
可我看文档和读源码都发现有key这个参数,所以实在不明白哪错了。

最后想部署到服务器上试试是不是本地服务器的bug时发现,我用的不是Model类,而是Expando类。于是我改成Model,发现创建成功了…

读了源码后发现,虽然Expando和PolyModel类继承自Model类,但是key是Model类构造器的一个keyword参数,而Expando和PolyModel并没有处理…

避免ReferenceProperty自动解引用

标签:Google App Engine, Python

刚才在GAE论坛看到这样一个问题:
一个模型里有一个引用属性(ReferenceProperty)。获取完实体集后,想要通过该引用属性来获取指向的实体。
重点是ReferenceProperty会自动解引用,访问它时会自动查询数据库,这样就会造成多次数据库访问,而不能用gb.get()来一次获取。

« 看看还有什么好玩意