【问题标题】:How do I get the key for the current record in GAE ndb in a Python for loop?如何在 Python for 循环中获取 GAE ndb 中当前记录的密钥?
【发布时间】:2012-08-09 02:20:50
【问题描述】:

我目前有一个网页,其中显示来自数据存储区的记录列表以及编辑链接。我想将它从 db 转换。到ndb。我是 Python 和 GAE 新手。

当前代码=

  <tbody>
    {% for listtype in listtypes %}
    <tr>
      <td> {{ listtype.ListTypeName }} </td>
      <td><a href ="/listtypes/edit/{{ listtype.key().id() }}">edit </a></td>
    </tr>
    {% endfor %}    
  </tbody>

然后在 .py 方面,我有:

def post(self, listtype_id):
    iden = int(listtype_id)
    listtypes = db.get(db.Key.from_path('ListTypes', iden))
    listtypes.ListTypeName = self.request.get('ListTypeName')
    listtypes.put()

我通过复制别人的代码得到了这些,但它确实有效。我需要知道代码是什么样子才能使它与 ndb 一起工作。 (我对模型和include语句没问题,我只需要知道如何在jinja2模板中检索密钥以及如何在post函数中使用它。

请提供实际代码应该如何使用 ndb。

提前致谢。

【问题讨论】:

    标签: python google-app-engine app-engine-ndb


    【解决方案1】:

    使用 NDB 键是属性而不是方法。所以你listtype.key().id()应该是listtype.key.id()

    【讨论】:

    • 感谢您的快速回复。这使 html 模板能够显示正确的链接。但是,在 def get(self, lang_id): iden = int(lang_id) listtypes = ndb.get(ndb.Key.from_path('ListTypes', iden)) 我得到了 get listtypes = ndb.get(ndb .Key.from_path('ListTypes', iden)) AttributeError: 'module' object has no attribute 'get' 编辑函数中get端的代码需要是什么样的?谢谢。
    • 对不起,我在 .py 上提出的声明不是正常工作的数据存储示例。 Thet code = listtypes = db.get(db.Key.from_path('ListTypes', iden)) 底线是我正在为 NDB 寻找与此等效的内容。谢谢。
    • 我几天来一直在反复查看此文档,但无法从文档中插入我需要的内容。该文档提供了一个检索实体的示例:sandy = sandy_key.get()。他们还有一个示例来检索实体 = ident = rev_key.id() 的 ID。就我而言,我需要能够从身份中检索实体。我不知道关键。如果您没有密钥,从身份检索实体的 NDB 语句是什么?谢谢。
    • 如果你想获得一个给定 Id 和 kind 的实体,那么你可以构造一个键。在上面的示例中,您尝试使用不在 ndb 中的 key_from_path。看看关键的构造函数参数。 class Key(flat=[kind1, id1, kind2, id2, ...]) 几乎完全相同。请参阅 ndb 参考。一旦你构建了密钥,你就可以调用 get()
    猜你喜欢
    • 2018-04-06
    • 2013-09-06
    • 2023-01-23
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2018-01-10
    相关资源
    最近更新 更多