首先我要说的是我对Python,应用引擎和数据存储区都很陌生,所以如果我遗漏了一些明显的东西,请善待。
我正在尝试使用祖先关系在数据存储区中设置一些数据,其方式与Google中示例留言板应用程序的方式相同:
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()
在我看来,好像我正在尝试做同样的事情..但是我得到了这个错误:
文件“... Application \ datastoreexplore \ main.py”,第41行,在get中 haydn = Music(parent = subscriber.key)BadValueError:预期字符串,得到Key('Subscriber','12169615523634875051')
我花了几个小时阅读文档并搜索stackoverflow和其他地方。我很难过。我做错了什么?
答案 0 :(得分:2)
您的问题是您已将parent定义为StringProperty但是如果要创建具有anancestor的实体,则传入一个有效构造函数参数的键。你不应该拥有一个叫做父母的财产。