複数オブジェクトミックスイン (Multiple object mixin)¶
MultipleObjectMixin¶
- class django.views.generic.list.MultipleObjectMixin¶
オブジェクトのリストを表示するために使用する Mixin です。
paginate_byが指定された場合、Django は結果をページネートします。URL 内のページ数は以下のいずれかの方法で指定します:URLconf 内で
pageパラメータを使用します。例えば、URLconf は以下のようになります:path("objects/page<int:page>/", PaginatedView.as_view()),
ページ番号は
pageクエリ文字列パラメータで渡します。例えば、URLは以下のようになります:/objects/?page=3
これらの値は (0 ベースではなく) 1 ベースなので、最初のページはページ
1で表示されます。ページ分割の詳細については、ページ分割のドキュメント を参照してください。
特別なケースとして、
lastをpageの値として使用することもできます:/objects/?page=last
これによって、自分で何ページ存在するかを調べることなく、最後のページにアクセスできます。
注意すべきなのは、
pageは有効なページ数ないし値lastの どちらかでなければならない ことです。pageに対する他の値はすべて 404 エラーとなります。親クラス
メソッドと属性
- allow_empty¶
有効なオブジェクトが 1 つもない場合にページを表示するかどうかを指定する真偽値です。
Falseに指定してオブジェクトが存在しない場合、空のページの代わりに 404 を投げます。デフォルトはTrueです。
- model¶
このビューがデータを表示する対象のモデルです。
model = Fooと指定することは、queryset = Foo.objects.all()の効率的な書き方で、objectsはFooの デフォルトマネージャ を表します。
- queryset¶
オブジェクトを表す
QuerySetです。指定すると、querysetの値はmodelの結果を上書きします。警告
querysetは ミュータブル(編集可能)な 値を伴うクラスの属性なので、直接使用する際には注意が必要です。この属性を使用する際は、all()メソッドを呼び出すか、内部で複製処理を行うget_queryset()でこれを取得するようにしてください。
- ordering¶
querysetに適用される並び順を指定するための文字列ないし文字列のリストです。order_by()に対するものと同じ値が有効です。
- paginate_by¶
何個のオブジェクトが各ページに表示されるべきかを指定する数値です。この値が指定されると、各ページにおいて
paginate_by数のオブジェクトをページネートします。ビューには (request.GETを通じた)pageクエリ文字列パラメータ、もしくは URLconf でpage変数が指定されることを必要とします。
- paginate_orphans¶
最後のページが含むことができる "はみ出た" オブジェクトの数を指定する数値です。最後のページで、
paginate_byの制限を最大でpaginate_orphansの値まで拡張し、最後のページでほんの少しのオブジェクトしか表示されないことを防ぎます。
- page_kwarg¶
ページのパラメータに使用する名前を指定する文字列です。ビューは (
request.GETを通じた) クエリ文字列パラメータ、もしくはURLconf 内で指定した kwarg が有効になっていることを必要とします。デフォルトはpageです。
- paginator_class¶
ページ分割に使用する paginator クラス。デフォルトでは
django.core.paginator.Paginatorが使用されます。カスタムの paginator クラスがdjango.core.paginator.Paginatorと同じコンストラクタのインターフェースを持っていない場合は、get_paginator()の実装も用意する必要があります。
- context_object_name¶
コンテキストで使用する変数名を指定します。
- get_queryset()¶
このビューのための項目のリストを取得します。これは必ずイテラブルにするべきであり、クエリセットにされることが多いです(クエリセット特有の動作を有効にするため)。
- paginate_queryset(queryset, page_size)¶
(
paginator,page,object_list,is_paginated) を含む 4-タプルを返します。querysetをページ分割してpage_sizeサイズのページを作成します。リクエストにpage引数(キャプチャ URL 引数または GET 引数)が含まれている場合、object_listはそのページのオブジェクトに対応します。
- get_paginate_by(queryset)¶
ページ分割を行うアイテムの数を返します。ページ分割を行わない場合は
Noneを返します。デフォルトの戻り値はpaginate_byです。
- get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)¶
このビューで使用する paginator のインスタンスを返します。デフォルトでは
paginator_classのインスタンスを作成します。
- get_paginate_orphans()¶
最後のページが含むことができる "overflow" オブジェクトの数を表す整数です。デフォルトでは
paginate_orphansの値を返します。
- get_allow_empty()¶
オブジェクトがない場合にページを表示するかどうかを表す真偽値を返します。このメソッドが
Falseを返し、利用可能なオブジェクトがない場合、ビューは空のページを表示する代わりに 404 を送出します。デフォルトではTrueです。
- get_context_object_name(object_list)¶
このビューが操作しているデータのリストを格納するために使用される、コンテキストの変数名を返します。もし
object_listがDjangoオブジェクトのクエリセットであり、context_object_nameが設定されていない場合、コンテキスト名はクエリセットを構成するモデルのmodel_nameとなり、接尾語として'_list'が付記されます。たとえば、Articleモデルならarticle_listという名前のコンテキストオブジェクトを保持します。
- get_context_data(**kwargs)¶
オブジェクトのリストを表示するためのコンテキストデータを返します。
コンテキスト
object_list: このビューが表示しているオブジェクトのリスト。もしcontext_object_nameが指定された場合、その変数もobject_listと同じ値でコンテキストに設定されます。is_paginated: 結果がページ分割されているかどうかを表す真偽値。具体的には、ページサイズが指定されていない場合や、利用可能なオブジェクトが複数ページにまたがっていない場合にFalseに設定されます。paginator:django.core.paginator.Paginatorのインスタンスです。ページがページ分割されていない場合、このコンテキスト変数はNoneになります。page_obj:django.core.paginator.Pageのインスタンスです。ページがページ分割されていない場合、このコンテキスト変数はNoneになります。
MultipleObjectTemplateResponseMixin¶
- class django.views.generic.list.MultipleObjectTemplateResponseMixin¶
オブジェクトインスタンスのリストを操作するビューに対してテンプレートベースのレスポンスレンダリングを行うミックスインクラスです。ミックスするビューが
self.object_listを提供する必要があります。self.object_listは、ビューが操作するオブジェクトインスタンスのリストです。self.object_listはQuerySetでも大丈夫で、必須ではありません。親クラス
メソッドと属性
- template_name_suffix¶
自動生成される候補テンプレート名に付加する接尾辞。デフォルトの接尾辞は
_listです。
- get_template_names()¶
テンプレート名の候補のリストを返します。以下のリストを返します:
ビューの
template_nameの値 (もしあれば)<app_label>/<model_name><template_name_suffix>.html