DjangoのDetailViewで表示対象のオブジェクトを取得

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で取り出してあげているだけですね。

参考

コメントを投稿

コメント