在Python中获取mongoDB集合中的文档的对象ID

时间:2012-10-15 10:39:34

标签: python django templates mongodb

我在mongodb中有一个集合,我已经插入了文档。现在我想要更新文档条目,我想在django模板中检索文档ID,就像我使用复选框旁边的复选框一样HTML。我想给单个框一个唯一的ID,我计划使用与文档ID相同的..所以如何在DJANGO模板中检索文档ID

1 个答案:

答案 0 :(得分:6)

您可以使用_id属性获取MongoDB文档的ID。但是,在Django模板中使用{{ object._id }}会使它抛出错误,说它无法找到_id属性。

要解决此问题,您必须为应用创建自定义模板标记,并使用它来获取_id。

在你的app文件夹中,创建一个templatetags文件夹并创建一些python文件,例如:appname_tags.py。

目录结构将是这样的

/projectdir
  /appdir
    /templatetags
      __init__.py
      appname_tags.py
    models.py
    views.py

在appname_tags.py内部粘贴以下代码

from django import template
register = template.Library()

@register.filter("mongo_id")
def mongo_id(value):
    return str(value['_id'])

现在,您可以通过加载标记模块并将mongo文档对象传递给模板,在模板中使用这个新的自定义模板标记。

<html>
 <body>
  {% load appname_tags %}
  <p>here is your mongodb record id: {{ object|mongo_id }}</>
 </body>
</html>

请注意,该应用应位于INSTALLED_APPS的{​​{1}}设置变量中,以便django加载模板标记。