使用Appengine的NDB从实体的id获取密钥

时间:2013-05-28 13:40:00

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我有一个基于ndb的模型,在保存的同时,我将'id'字段存储为当前登录用户的用户ID。 (为什么我这样做?实际上这个模型过去基于db.Model而key_name有这个用户的id。现在,我将它转换为ndb)

m= Modelclass(id = str(users.get_current_user().used_id()),
      --- Other fields ---
m.put()

此模型的编辑表单发送此“id”,我想从中获取相应的“密钥”。但是,我得到“密钥ID号太长;收到'一些big_number'”。尝试过两种方式

Modelclass.get_by_id(<id>).key 

OR

ndb.Key('Modelclass', <id>)

这是一种情况,可能存在其他情况,用户可以在'id'字段中存储一些大数字。在这些情况下,我们无法从“id”中提取密钥。那么,如何解决这样的问题呢。

我是ndb的新手。谢谢你的帮助。

1 个答案:

答案 0 :(得分:6)

看起来你的值是一个int,而不是一个字符串。但是在创建权利时,您将其转换为字符串。有一个简单的解决方案:

ndb.Key('Modelclass', str(<id>))
祝你好运!