如何在代码中设置entity
的密钥。
示例,我有一个用户类
class User(ndb.Model)
email
我希望能够使用电子邮件属性设置电子邮件属性和查询
my_user = User(email='xyz@ab.com')
上述语句设置了电子邮件属性,但Google App Engine会生成自己的密钥。
我可以使用User(key='xyz@ab.com')
设置密钥如果我可以在实体中设置密钥属性,如何使用密钥
查询实体这是否有效 User.query(key='xyz@ab.com')。得到()
我意识到我可以使用email
作为属性进行查询,但遗憾的是我无法在transaction
的上下文中进行查询。
这就是我问如何通过键获取(),set()的原因。
另外,当我最终按属性查询时,我需要在属性上创建索引,我知道这些索引是唯一的
答案 0 :(得分:2)
是的,但它不是my_user = User(key='xyz@ab.com')
,它是:
my_user = User(id='xyz@ab.com')
my_user_key = my_user.put()
现在,my_user_key
是关键,因此您可以通过以下方式获取:
the_user_entity = my_user_key.get()
或者,稍后,您可以通过构建密钥来获取它:
my_user_key = ndb.Key(User, id='xyz@ab.com')
the_user_entity = my_user_key.get()
或直接通过:
User.get_by_id('xyz@ab.com')