Gio*_*oia 4 google-app-engine app-engine-ndb google-cloud-datastore
我曾经使用get_by_id从数据存储中获取实体,从不使用祖先路径.但我的模型的复杂性使它成为必要.事实上,Ancestor Paths解决了一个大问题,但现在当我尝试get_by_id实体返回时,None如果实体具有父键.这意味着我需要添加父键:
entity = MyModel.get_by_id(id)
Run Code Online (Sandbox Code Playgroud)
这会变成:
entity = MyModel.get_by_id(id, parent=key)
Run Code Online (Sandbox Code Playgroud)
如何构建父键?
编辑:
此时我更喜欢留下祖先路径并添加另一个keyproperty.
如果你想使用实体组,你可以简单地创建一个这样的键:
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)
Run Code Online (Sandbox Code Playgroud)
我注意到:你使用大写的key参数.它的父母不是父母.
entity = MyModel.get_by_id(id, Parent=key) # Wrong
entity = MyModel.get_by_id(id, parent=key)
Run Code Online (Sandbox Code Playgroud)
哦,你正在使用NDB:
key_parent = ndb.Key('MyModelParent', 'id_parent')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2538 次 |
| 最近记录: |