Chr*_*loe 16 python google-app-engine google-cloud-datastore
我可以在AppEngine土地上使用一些帮助......
使用[Python] API我从文档中创建这个例子的关系:
class Author(db.Model):
name = db.StringProperty()
class Story(db.Model):
author = db.ReferenceProperty(Author)
story = db.get(story_key)
author_name = story.author.name
Run Code Online (Sandbox Code Playgroud)
据我了解,该示例将进行两次数据存储查询.一个用于获取故事,然后一个用于尊重作者以便访问该名称.但是我希望能够获取id,所以做类似的事情:
story = db.get(story_key)
author_id = story.author.key().id()
Run Code Online (Sandbox Code Playgroud)
我想刚刚得到的参考ID.我不想依赖(因此查询数据存储区)ReferenceProperty值.
从阅读文档说它
ReferenceProperty的值是一个Key
这让我觉得我可以在引用的值上调用.id().但它也说:
ReferenceProperty模型提供Key属性值的功能,例如自动解除引用.
我找不到任何可以解释何时进行此引用的内容?
在ReferenceProperty的值上调用.id()是否安全?
是否可以假设调用.id()不会导致数据存储查找?
Chr*_*loe 27
为了帮助其他搜索者回答我自己的问题......
怀疑调用story.author.key().id()甚至story.author.id()会导致数据存储区查询.API文档规定的正确方法是:
story = db.get(story_key)
author_id = Story.author.get_value_for_datastore(story).id()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |