Google app engine BadValueError:应为字符串,在创建子实体时获取密钥
首先,我要说的是,我对Python、应用程序引擎和数据存储非常陌生,所以如果我遗漏了一些明显的东西,请原谅 我正在尝试在数据存储中设置一些具有祖先关系的数据,方法与Google的示例guestbook应用程序相同:Google app engine BadValueError:应为字符串,在创建子实体时获取密钥,google-app-engine,python-2.7,google-cloud-datastore,app-engine-ndb,Google App Engine,Python 2.7,Google Cloud Datastore,App Engine Ndb,首先,我要说的是,我对Python、应用程序引擎和数据存储非常陌生,所以如果我遗漏了一些明显的东西,请原谅 我正在尝试在数据存储中设置一些具有祖先关系的数据,方法与Google的示例guestbook应用程序相同: class Guestbook(webapp2.RequestHandler): def post(self): greeting = Greeting(parent=guestbook_key) 我创建了这段代码作为一个实验,看看是否可以让它工作: class Sub
class Guestbook(webapp2.RequestHandler):
def post(self):
greeting = Greeting(parent=guestbook_key)
我创建了这段代码作为一个实验,看看是否可以让它工作:
class Subscriber(ndb.Model):
user_nickname = ndb.StringProperty()
user_id = ndb.StringProperty()
class Music(ndb.Model):
level = ndb.StringProperty() # top or sub
parent = ndb.StringProperty() # only if sub
title = ndb.StringProperty()
class SetupHandler(webapp2.RequestHandler):
def get(self):
user = users.get_current_user()
subscriber = Subscriber(id=user.user_id())
subscriber.user_id = user.user_id()
subscriber.user_nickname = user.nickname()
haydn = Music(parent=subscriber.key)
haydn.level = "top"
haydn.title = "Haydn Trumpet Concerto"
haydn.put()
在我看来,我似乎在尝试做基本相同的事情。。但我得到了这个错误:
get中第41行的文件“…Application\datastoreexplore\main.py”
haydn=Music(parent=subscriber.key)BadValueError:应为字符串,get key('subscriber','12169615523634875051')
我花了几个小时阅读文档,在stackoverflow和其他地方搜索。我被难住了。我做错了什么???您的问题是您已将父对象定义为StringProperty,但如果要使用anancestor创建实体,请传入一个作为有效构造函数参数的键。您不应该让属性名为parent。谢谢!!我知道这会很明显,但我就是看不见!!