0

私は db.Model を教える Udacity の Web 開発コースを受講しています。代わりに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 に答える