使用ndb.KeyProperty如何引用相同的模型?

ujj*_*cal 9 google-app-engine app-engine-ndb google-cloud-datastore

我有一个简单的场景,其中有一个User类,它有name,email和followers属性.

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)
Run Code Online (Sandbox Code Playgroud)

执行此操作时,我收到错误.

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 -
Run Code Online (Sandbox Code Playgroud)

关于如何模仿"追随者"属性的任何建议都将受到高度赞赏.提前致谢

Rob*_*tis 30

在密钥属性上使用种类e.g. some_prop = ndb.KeyProperty(User)只强制密钥的类型必须是用户类型.因此,如果需要,您仍然可以使用KeyProperty.

但是,如果您想强制所有关注者密钥必须是用户(在用户模型内),那么用引号括起来:

followers = ndb.KeyProperty(kind='User', repeated=True)
Run Code Online (Sandbox Code Playgroud)

ndb备忘单中解释得更好一些