我认为答案是"是",但我想确认。如果一个ndb。模型是另一个数据库的"子"。模型(通过一对多关系),我可以删除KeyProperty并在查询中简单地使用祖先键吗?例如:
class Parent(ndb.Model):
pass
class Child(ndb.Model):
parent_key = ndb.KeyProperty(Parent)
我可以简单地删除parent_key
而使用.filter(ancestor=parent_key)
吗?
[update]:下面的问题得到了回答,但是前面的问题(关于查询)仍然存在。
在更深的层次上,祖先键"等同于"KeyProperty价值观?
No.
一个键可以由许多段组成,例如:
ndb.Key('Parent', 'grandma', 'Parent', 'dad', 'Child', 'you')
这存储在对象的key
中,并且获得父级只是丢弃最后两个段并给出其余部分。所以对于上面的代码:
ndb.Key('Parent', 'grandma', 'Parent', 'dad')
KeyProperty
与此无关,它只是实体拥有的属性。
所以如果你要创建:
child = Child(parent=ndb.Key('Parent', 'grandma', 'Parent', 'dad'))
你会发现
>>> child.key
ndb.Key('Parent', 'grandma', 'Parent', 'dad', 'Child', None)
,
>>> child.parent_key
None