0

我正在学习 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

我相信这组类方法旨在返回用户实体,给定它的“用户名”属性,如果它存在的话。我很感激任何提示!谢谢阅读。

4

1 回答 1

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
于 2013-11-13T23:46:32.370 回答