Created 2018年11月22日19:15
Updated 2018年11月22日19:22
Categories
Django
Python
DjangoのGeneric Views、便利ですが機能が多すぎて初見殺しなところありますよね。
DetailViewのテンプレートに追加のパラメータを返したい時、対象のオブジェクトからそのパラメータを生成したいことがありました。
そんな時は、以下のようにしてモデルオブジェクトを取得できます。
class PostDetailView(DetailView):
model = Post
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
post = context.get("object")
# do something
return context
postはそのままobjects.get(...)
のような形で取得したオブジェクトと同じように使えます。
ここからcontextに追加のパラメータを渡して最後にreturnしてやれば、テンプレートで値を使うことができます。
というか、よく考えたらテンプレート内でもobjectを普通に使えていますので、それをviewで取り出してあげているだけですね。