Djangoのobject_listの名前を変更する方法

Docker

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

 

コメント