实例密钥或ID的NDB投影

时间:2012-09-02 17:46:35

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

我在GoogleAppEngine上使用NDB,我希望通过将电子邮件传递给查询来检索实例密钥或ID。

我的模型看起来像这样:

class Users(ndb.Model):
    user_name = ndb.StringProperty(required=True)
    user_email = ndb.StringProperty(required=True)
    user_password = ndb.StringProperty(required=True)

    @classmethod
    def get_password_by_email(cls, email):
        return Users.query(Users.user_email == email).get(projection=[Users.key, Users.user_password])

运行代码时,出现以下错误:

BadProjectionError: Projecting on unknown property __key__

如何通过AppEngine NDB中的电子邮件查询用户(例如登录过程)来获取实例ID或密钥?

谢谢!

2 个答案:

答案 0 :(得分:14)

投影查询将始终包含密钥以及您指定的字段,因此如果keys_only不够,则:

return Users.query(Users.user_email == email).get(projection=[Users.password])

答案 1 :(得分:5)

如果您只需要Key,则可以尝试仅使用密钥查询:

Users.query(Users.user_email == email).get(keys_only=True)