上下文:
我正在开发一款web应用程序。如果我不使用祖先,那么尝试在立即插入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', *)
,但还没有想好怎么做。
有可能吗?
发布于 2014-02-13 21:12:23
key = ndb.Key(BlogPost, 12345)
qry = Comment.query(ancestor=key)
所以你的例子是
key = ndb.Key(Office, 0)
qry = Office.query(ancestor=key)
https://stackoverflow.com/questions/21754859
复制相似问题