複数オブジェクトミックスイン (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