複数のオブジェクトミックスイン—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/class-based-views/mixins-multiple-object
移動先:案内検索

複数のオブジェクトミックスイン

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として表されます。

ページ付けの詳細については、ページ付けのドキュメントをお読みください。

特別な場合として、lastpageの値として使用することも許可されています。

/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)

paginatorpageobject_listis_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に設定されます。

  • paginatordjango.core.paginator.Paginator のインスタンス。 ページがページ分割されていない場合、このコンテキスト変数はNoneになります。

  • page_objdjango.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