object_listの名前を変更したい
Djangoで以下のようなサンプルコードのようにget_querysetで取得した値をHTML側で表示したい!ってことがあります。
サンプルコード
class Sample(generic.ListView): model = Sample def get_queryset(self): return Sample.objects.all()
その際にHTML側では、ListViewで自動的に生成されるコンテキスト変数のobject_listまたは、「モデル名 + list」でsample_listで参照することができますよね!
ただこれだとわかりにくので、任意のわかりやすいものに変更したい!って時の方法をご紹介します。
自動的に生成されるコンテキスト変数を変更する方法
context_object_nameに名前を指定する
自動生成されるコンテキスト変数を変更する方法は簡単です。
このように、context_object_nameに名前を指定すると、その名前でHTMLから参照できるようになるのです!
context_object_name = "items"
例えばこのように、context_object_name = “items”としてitemsと名前を指定します。
class Sample(generic.ListView): model = Sample context_object_name = "items" def get_queryset(self): return Sample.objects.all()
HTML側では、指定したitemsという名前で参照することができるのです!
{% for item in items %} {{ item }} {% endfor %}
参考サイト

Djangoメモ(31) : クラスベース汎用ビューのListViewで一覧表示とページネーション - もた日記
ListViewで一覧ページ作成 対話型シェルでページネーションの確認 関数ベースビューでのページネーション クラスベース汎用ビューのListViewでのページネーション ページネーションのテンプレートを再利用 まとめ A Complete Beginner's Guide to Djangoのチュートリアルを参考にク...
はじめての Django アプリ作成、その 4 | Django ドキュメント | Django
コメント