
【スポンサーリンク】
基本的な使用例
例として、モデルItem内のオブジェクトを、ListViewクラスを用いてリスト表示する簡単な使用例を示す。
views.py
#ListViewのインポート from django.views.generic.list import ListView #modelのインポート from .models import Item #ListView class TestListView(ListView): template_name = 'test.html' #template model = Item #model
test.html (template)
{% for instance in object_list %} <p> {{ instance.title }} </p> {% endfor %}
view.py内でListViewクラスを継承したクラスを作成し、template_nameとmodelを指定するだけでリスト化したオブジェクトをテンプレートファイルに渡される。
テンプレート側には、object_list
内にリスト化されたオブジェクトが渡されるため、for文を用いて表示させることができる。
ユーザー名を指定してリスト表示
モデル内の全てのオブジェクトではなく、特定の条件を満たしたオブジェクトのみを表示させることができる。 例として、Itemオブジェクト内のusernameを参照し、ログインしているユーザー名と一致している場合のみリスト表示させる例を示す。
class TestListView(ListView): template_name = 'test.html' #template model = Item #model def get_queryset(self): return self.model.objects.filter( username=self.request.user, )
ListViewクラスのget_queryset
メソッドを上書きすることで、モデルから抽出するオブジェクトにフィルターをかけることができる。上記の例では、Itemモデル内のusernameが、requestを出したユーザー名と一致するオブジェクトのみ抽出するように上書きしている。
【スポンサーリンク】