# a person who has pets
john=Person(**kwargs)
# pets
fluffy=Pet(parent=john, ...)
rover=Pet(parent=john, ...)
# lengthy details about john that are accessed infrequently
facts=Details(parent=john, ...)
# Build a key for the parent
john_key = db.Key.from_path('Person', 1)
# Build a key for the children
fluffy_key = db.Key.from_path('Pet', 1, parent=john_key)
rover_key = db.Key.from_path('Pet', 2, parent=john_key)
# Get all three at once
john, fluffy, rover = db.get([john_key, fluffy_key, rover_key])
扩展Adam的答案:如果您不知道}的密钥名或密钥ID,则不能仅仅基于
fluffy
、rover
或{john
的实体或密钥提前构造密钥。你必须使用祖先查询,就像亚当的答案一样。在另一方面,如果您知道这些子实体的名称或ID(例如,在请求处理程序中,ID作为URL的一部分出现),则可以基于
john
实体或其键构造它们的键。E、 g.:这些示例假设所有的实体键都有id,但是如果它们有名称,则可以用字符串名称代替
int
id。在要使用ancestor filter:
您可以通过指定事实的类型来获取事实:
^{pr2}$使用
get()
而不是fetch()
假设john只有一个Details
子级。如果这不是真的,请调用fetch
来获取所有这些数据。在相关问题 更多 >
编程相关推荐