Appengine Datastore db和ndb之间的混淆

时间:2013-11-13 23:28:02

标签: google-app-engine app-engine-ndb

我正在学习Udacity的Web开发课程,该课程在db.Model中讲授。我想在ndb中这样做。

任何帮助将不胜感激。我将以下db.Model代码转换为ndb.Model:

时遇到了很多麻烦
class User(db.Model):
    name = db.StringProperty(required = True)
    pw_hash = db.StringProperty(required = True)
    email = db.StringProperty()

    @classmethod
    def by_name(cls, name):
        u = User.all().filter('name =', name).get()
        # My Attempt:
        # u = User.query(cls.username).get
        return u

    @classmethod
    def login(cls, name, pw):
        u = cls.by_name(name)
        if u:
            return u

我相信这套classmethod旨在返回用户实体,给定其'username'属性(如果存在)。我很感激任何小费!谢谢你的阅读。

1 个答案:

答案 0 :(得分:0)

ndb中的许多内容具有相同的名称,其工作方式与db中相同,因此更改属性非常简单。您可以在模型实例上调用.all(),而不是query。使用python比较运算符进行过滤,模型的属性位于左侧(反之亦然,从未尝试过。

class User(ndb.Model):
    name = ndb.StringProperty(required = True)
    pw_hash = ndb.StringProperty(required = True)
    email = ndb.StringProperty()

    @classmethod
    def by_name(cls, name):
        u = cls.query().filter(User.name == name).get()
        return u

    @classmethod
    def login(cls, name, pw):
        u = cls.by_name(name)
        if u:
            return u