这是一个创建于 5061 天前的主题,其中的信息可能已经有所发展或是发生改变。
1、假设 “<” 符号可以代表:
孙实体<子实体<父实体
2、初始化(伪代码):
class A(db.Model):
#...
class B(db.Model):
#...
class C(db.Model):
#...
a=A()
a.put()
b=B(parent=a)
b.put()
c=C(parent=b)
c.put()
于是得到关系为 c <- b <- a 这样一组实体。
3、要想已知 c 的 id 或 key_name 获得 c :
这样会失败:
c=C.get_by_id(id)
而必须这样做:
key=db.Key.from_path('A', a.key().id_or_name(), 'B',b.key().id_or_name(), 'C',id )
c=db.get(key)
4、路径不仅可以用在不同Kind的不同实体之间。也可以用在相同 Kind 不同的实体之间。
例如2中初始化代码可以改成:
class M(db.Model):
#...
a=M()
a.put()
b=M(parent=a)
b.put()
c=M(parent=b)
c.put()
获取:
key=db.Key.from_path('M', a.key().id_or_name(), 'M', b.key().id_or_name(), 'M', id)
c=db.get(key)