2012-10-15 60 views
1

我在其中已經插入了文檔的mongodb中有一個集合。現在我想更新文檔條目,並且想要在django模板中檢索文檔ID,就像我使用複選框旁邊的HTML條目。我想給個別的盒子一個唯一的ID,我打算使用相同的文件ID ..所以如何檢索文件ID在DJANGO模板在Python中獲取已存在於mongoDB集合中的文檔的對象ID

+3

顯示一些代碼,你如何試圖做到這一點,特別是在哪裏卡住。記住StackOverflow不是論壇!看到這裏的一些常見問題http://stackoverflow.com/faq –

回答

5

您可以使用_id屬性獲取MongoDB文檔的ID。但是,在Django模板中使用{{ object._id }}時,會導致錯誤,指出它找不到_id屬性。

要解決這個問題,您必須爲您的應用程序創建一個自定義模板標記並使用它來獲取_id。

在您的應用程序文件夾中,創建一個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設置變量settings.py Django的加載模板標籤。

+0

好的完整答案。 +1 – shaw2thefloor

相關問題