4

我曾经使用get_by_id从数据存储中获取实体,但从不使用Ancestor Paths。但是我的模型的复杂性使它变得很有必要。事实上,祖先路径解决了一个大问题,但现在当我尝试get_by_id实体返回None时,如果实体具有父键。这意味着我需要添加父键:

entity = MyModel.get_by_id(id)

这将变成:

entity = MyModel.get_by_id(id, parent=key)

如何构建父密钥?

编辑:

在这一点上,我更喜欢留下祖先路径并添加另一个 keyproperty。

4

1 回答 1

7

如果你想使用实体组,你可以简单地创建一个这样的键:

key_parent = db.Key.from_path('MyModelParent', 'id_parent') # You don't have to create this kind in the datastore.

id = int(self.request.get('id'))
entity = MyModel.get_by_id(id, parent=key_parent)

我注意到:您对 key 参数使用大写。这是parent不是Parent

entity = MyModel.get_by_id(id, Parent=key) # Wrong
entity = MyModel.get_by_id(id, parent=key)

哦,你正在使用 NDB:

key_parent = ndb.Key('MyModelParent', 'id_parent')
于 2012-07-06T13:32:41.773 回答