9

name、email、followersプロパティを持つUserクラスがある単純なシナリオがあります。

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

    follows = ndb.KeyProperty(Follow, repeated=True)
    followers = ndb.KeyProperty(User, repeated=True)

これを実行しているときにエラーが発生します。

File "C:\ujjal\my project\cravel\code2\Users.py", line 46, in User
  followers = ndb.KeyProperty(User, repeated=True)
NameError: name 'User' is not defined
INFO     2012-09-11 11:45:23,953 dev_appserver.py:2967] "GET / HTTP/1.1" 500 -

「フォロワー」属性をどのようにモデル化するかについての提案は大歓迎です。前もって感謝します

4

2 に答える 2

30

キープロパティで種類を使用すると、e.g. some_prop = ndb.KeyProperty(User)キーの種類は種類Userである必要があります。したがって、必要に応じて、種類なしでKeyPropertyを使用できます。

ただし、すべてのフォロワーキーが(ユーザーモデル内の)種類Userである必要があることを強制する場合は、種類を引用符で囲みます。

followers = ndb.KeyProperty(kind='User', repeated=True)

ndbのチートシートでもう少し詳しく説明されています

于 2012-09-11T14:00:25.220 に答える
2

「フォロワー」をKeyPropertyにしたい場合は、次のように入力します。

followers = ndb.KeyProperty(repeated=True)

または、私があなたが求めていると思うのは、キーのタイプを指定することです。

follows = ndb.KeyProperty(kind=User,repeated=True)

kind=Userたぶんあなたは行方不明だと思います。

https://developers.google.com/appengine/docs/python/ndb/properties#types

于 2012-09-11T12:34:12.720 に答える