我有一个简单的场景,其中有一个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)
执行此操作时,我收到错误。
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 -
关于如何模仿“追随者”属性的任何建议都将受到高度赞赏。 在此先感谢
答案 0 :(得分:30)
在密钥属性e.g. some_prop = ndb.KeyProperty(User)
上使用种类只强制密钥的类型必须是用户类型。因此,如果需要,您仍然可以使用KeyProperty。
但是,如果您想强制所有关注者密钥必须属于用户(在用户模型内),请用引号括起来:
followers = ndb.KeyProperty(kind='User', repeated=True)
中解释得更好
答案 1 :(得分: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