【问题标题】:GAE simple data model error '_ReverseReferenceProperty' object has no attribute 'fetch'GAE 简单数据模型错误 '_ReverseReferenceProperty' 对象没有属性 'fetch'
【发布时间】:2012-05-01 00:36:10
【问题描述】:

我有一对多的模型方案。一切似乎都是正确的,数据填充有效,但 linkitem_set.fetch 失败:

AttributeError: '_ReverseReferenceProperty' 对象没有属性 '获取'

这里还有一个关于 SO 的问题,错误相同,但没有解决方案。 我的代码如下:

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 并在本地进行了测试和托管。

【问题讨论】:

    标签: google-app-engine google-cloud-datastore


    【解决方案1】:

    我认为问题在于linkitem_set 集合只存在于Project实例,但您正试图在类本身上使用它。

    您的代码应该看起来更像这样:

    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')
    

    【讨论】:

    • 还是一样AttributeError: '_ReverseReferenceProperty' object has no attribute 'get'
    • @user1365851,我注意到可能是其他问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2014-05-07
    • 2018-07-24
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多