谷歌应用引擎NDB数据存储get_by_id获取实体



我正在尝试使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文档中有关模型get_by_id的参考。

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

调用get_by_id(int(id))中将其转换为 int

最新更新