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

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 %}

参考サイト

https://wonderwall.hatenablog.com/entry/2018/03/31/001500

https://docs.djangoproject.com/ja/2.2/intro/tutorial04/

← Go home