上下文:
我正在开发一个网络应用。 如果我不使用祖先,在立即插入新的ndb.Model值后尝试更新元素不会获取新值。 但是,使用祖先,我会得到一致的结果。
但是,我想制作一个项目层次结构。
示例:
class Office(ndb.Expando):
name = ndb.StringProperty()
鉴于办事处:
HQ = Office(key=ndb.Key('Office', '0'), name='HQ')
BR1 = Office(key=ndb.Key('Office', '0','Office', 'BR1'), name='Branch 1')
BR2 = Office(key=ndb.Key('Office', '0', 'Office', 'BR2'), name='Branch 2')
BR1S1 = Office(key=ndb.Key('Office', 'S1'), name='Branch 1 Sector 1')
BR1S2 = Office(key=ndb.Key('Office', 'S2'), name='Branch 1 Sector 2')
BR2S1 = Office(key=ndb.Key('Office', 'S1'), name='Branch 2, Sector 1')
BR2S1 = Office(key=ndb.Key('Office', 'S2'), name='Branch 2, Sector 2')
我无法获得强大的一致性,因为它们都是根祖先。
鉴于办事处:
HQ = Office(key=ndb.Key('Office', '0'), name='HQ')
BR1 = Office(key=ndb.Key('Office', '0','Office', 'BR1'), name='Branch 1')
BR2 = Office(key=ndb.Key('Office', '0', 'Office', 'BR2'), name='Branch 2')
BR1S1 = Office(key=ndb.Key('Office', '0', 'Office', 'BR1','Office', 'S1'), name='Branch 1 Sector 1')
BR1S2 = Office(key=ndb.Key('Office', '0', 'Office', 'BR1','Office', 'S2'), name='Branch 1 Sector 2')
BR2S1 = Office(key=ndb.Key('Office', '0', 'Office', 'BR2','Office', 'S1'), name='Branch 2, Sector 1')
BR2S1 = Office(key=ndb.Key('Office', '0', 'Office', 'BR2','Office', 'S2'), name='Branch 2, Sector 2')
我也无法从单个查询中获取所有内容,因为祖先参数只能完全匹配。
我想查询祖先ndb.Key('Office', '0', *)
,但还没弄明白该怎么做。
有可能吗?
答案 0 :(得分:0)
key = ndb.Key(BlogPost, 12345)
qry = Comment.query(ancestor=key)
所以你的例子是
key = ndb.Key(Office, 0)
qry = Office.query(ancestor=key)