我有一对多的模型方案。一切似乎都正确,数据填充有效但linkitem_set.fetch
失败了:
AttributeError:'_ ReverseReferenceProperty'对象没有属性 '取'
此处还有一个问题,其中有相同的错误,但没有解决方案。 我的代码如下:
class Project(db.Model):
name = db.StringProperty()
class LinkItem(db.Model):
url = db.StringProperty()
project = db.ReferenceProperty(Project)
class Show(webapp2.RequestHandler):
def get(self):
links = Project.linkitem_set.fetch(100)
self.response.headers['Content-Type'] = 'text/plain'
for li in links:
self.response.out.write(li + '/r/n')
class PopulateDb(webapp2.RequestHandler):
def get(self):
prj = Project(name = 'SomeProject 1')
prj.put()
for i in range(1000):
rlink = random.betavariate(1, 2)
link = LinkItem(url = str(rlink), project = prj)
link.put()
我正在使用Python 2.7并测试了这个localy并托管。
答案 0 :(得分:1)
我认为问题在于linkitem_set
集合仅存在于Project
的实例,但您尝试在类本身上使用它。< / p>
您的代码应该看起来更像这样:
class Show(webapp2.RequestHandler):
def get(self):
prj_name = "" # Get a valid value, probably from URL params
prj_to_show = Project.all().filter("name=", prj_name).get()
if prj_to_show is not None:
links = prj_to_show.linkitem_set.fetch(100)
self.response.headers['Content-Type'] = 'text/plain'
for li in links:
self.response.out.write(li + '/r/n')