假设我有
class Foo(db.Model):
bar = db.ReferenceProperty(Bar)
foo = Foo.all().get()
有没有办法让我在不向数据存储区进行查询的情况下执行 foo.bar 操作?文档说foo.bar
将是一个实例Key
,所以我希望能够做到foo.bar.id()
并能够得到id
of the Bar
与相关联foo
,但似乎并非如此。
PS:我所指的文档部分可以在这里找到:
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ReferenceProperty http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ReferenceProperty
它是这样说的:
“应用程序可以显式 db.get() ReferenceProperty 的值(它是一个键)来测试引用的实体是否存在。”
As the docs http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ReferenceProperty say,
ReferenceProperty 值可以是
就好像它是一个模型实例一样使用,
数据存储实体将是
获取并创建模型实例
当它第一次以这种方式使用时。
未触及的参考属性不会
查询不需要的数据。
所以只要你不碰它就没事,但如果你碰了它,例如与.id()
正如您所展示的那样,调用“将获取数据存储实体”,文档说。更多文档有here http://code.google.com/appengine/docs/python/datastore/entitiesandmodels.html#References,但他们也没有展示一种无需提取即可神奇地获取 id 的方法。
我没有尝试过,但你也许可以使用获取数据存储的值 http://code.google.com/appengine/docs/python/datastore/propertyclass.html#Property_get_value_for_datastore属性来获取“属性的 Python 原生值”,我相信这确实是一个键——它的id()
方法应该可以在没有数据存储提取的情况下调用。你尝试过吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)