Google App Engine NDB数据存储get_by_id获取实体

时间:2013-12-27 06:37:24

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

我试图让get_by_id()工作,但我不确定我做的是错的还是不行。我希望它能返回类似于ndb.Key('Organization',id).get()的实体,但两者都不起作用。这是我尝试过的:

class CompaniesPage(BaseHandler):
  def get(self):
    id = self.request.get('id')
    organizations = Organization.query()
    company = Organization.get_by_id(id) # first try
    values = {
      'organizations' : organizations,
      'company' : company,
      'id' : id
    }
    self.render_html('companies.html',values)

第二次尝试:

class CompaniesPage(BaseHandler):
  def get(self):
    id = self.request.get('id')
    organizations = Organization.query()
    company = ndb.Key('Organization',id).get() # second try
    values = {
      'organizations' : organizations,
      'company' : company,
      'id' : id
    }
    self.render_html('companies.html',values)

这是我使用Jinja2的html。

 <h3> {{ company }} <small>{{ id }} Category</small></h3>

我收到以下文字:

  

无6201245580656640类别

我尝试在Google App Engine文档中关注Model get_by_id的引用。

1 个答案:

答案 0 :(得分:9)

您还没有说过如何创建实体但是根据您的示例None 6201245580656640 Category6201245580656640之类的ID告诉我您可能正在使用自动生成的ID,这是一个不是字符串的整数。您从请求对象获取id,这将是一个字符串。

将其转换为通话get_by_id(int(id))

中的int