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

Fra*_*oel 2 google-app-engine jinja2 app-engine-ndb google-cloud-datastore

我正在努力完成这项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)
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

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)
Run Code Online (Sandbox Code Playgroud)

这是我的html使用Jinja2.

 <h3> {{ company }} <small>{{ id }} Category</small></h3>
Run Code Online (Sandbox Code Playgroud)

我得到以下文字:

无6201245580656640类别

我尝试在Google App Engine文档中关注Model get_by_id的参考.

Tim*_*man 9

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

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