2

既にドキュメントを挿入した mongodb のコレクションがあります。ドキュメント エントリを更新し、django テンプレートでドキュメント ID を取得したいと考えています。HTML のエントリの横にチェックボックスを使用しているように、個々のボックスに、ドキュメント ID と同じように使用する予定の一意の ID を指定したいのですが、DJANGO テンプレートでドキュメント ID を取得するにはどうすればよいですか?

4

1 に答える 1

7

_id属性を使用して、MongoDBドキュメントのIDを取得できます。ただし{{ object._id }}、Djangoテンプレートで使用すると、_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>

djangoがテンプレートタグをロードするには、アプリがのINSTALLED_APPS設定変数に含まれている必要があることを忘れないでください。settings.py

于 2013-02-20T09:38:53.507 に答える