複数のオブジェクトミックスイン—Djangoドキュメント
複数のオブジェクトミックスイン
MultipleObjectMixin
- class django.views.generic.list.MultipleObjectMixin
オブジェクトのリストを表示するために使用できるミックスイン。
paginate_by
が指定されている場合、Djangoはこれによって返される結果をページングします。 URLのページ番号は、次の2つの方法のいずれかで指定できます。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
使用可能なオブジェクトがない場合にページを表示するかどうかを指定するブール値。 これが
False
であり、使用可能なオブジェクトがない場合、ビューは空のページを表示する代わりに404を表示します。 デフォルトでは、これはTrue
です。
- model
このビューがデータを表示するモデル。
model = Foo
を指定することは、queryset = Foo.objects.all()
を指定することと実質的に同じです。ここで、objects
は、Foo
のデフォルトマネージャーを表します。
- queryset
オブジェクトを表す
QuerySet
。 指定されている場合、queryset
の値は、モデルに提供されている値よりも優先されます。警告
queryset
は、 mutable 値を持つクラス属性であるため、直接使用する場合は注意が必要です。 使用する前に、 all()メソッドを呼び出すか、 get_queryset()を使用して取得し、バックグラウンドでクローンを作成します。
- ordering
queryset
に適用する順序を指定する文字列または文字列のリスト。 有効な値は、 order_by()の値と同じです。
- paginate_by
1ページに表示するオブジェクトの数を指定する整数。 これが指定されている場合、ビューはページごとに
paginate_by
オブジェクトでオブジェクトをページングします。 ビューには、page
クエリ文字列パラメーター(request.GET
経由)または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()
このビューのアイテムのリストを取得します。 これは反復可能である必要があり、クエリセット(クエリセット固有の動作が有効になる)である可能性があります。
- get_ordering()
queryset
に適用される順序を定義する文字列(または文字列の反復可能)を返します。デフォルトで ordering を返します。
- 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_class のインスタンスをインスタンス化します。
- get_paginate_orphans()
最後のページに含めることができる「オーバーフロー」オブジェクトの数を指定する整数。 デフォルトでは、これは paginate_orphans の値を返します。
- get_allow_empty()
使用可能なオブジェクトがない場合にページを表示するかどうかを指定するブール値を返します。 このメソッドが
False
を返し、使用可能なオブジェクトがない場合、ビューは空のページを表示する代わりに404を表示します。 デフォルトでは、これはTrue
です。
- get_context_object_name(object_list)
このビューが操作しているデータのリストを含めるために使用されるコンテキスト変数名を返します。
object_list
がDjangoオブジェクトのクエリセットであり、 context_object_name が設定されていない場合、コンテキスト名はクエリセットの構成元のモデルのmodel_name
になり、接尾辞[ X191X] が追加されました。 たとえば、モデル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
は、 QuerySet である場合がありますが、必須ではありません。拡張します
メソッドと属性
- template_name_suffix
自動生成された候補テンプレート名に追加する接尾辞。 デフォルトのサフィックスは
_list
です。
- get_template_names()
候補テンプレート名のリストを返します。 次のリストを返します。
ビューの
template_name
の値(提供されている場合)<app_label>/<model_name><template_name_suffix>.html