Multiple object mixins

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 で表示されます。

ページネーションの詳細については、ページネーションのドキュメント を参照してください。

特別なケースとして、page に対する値として last を使用することもできます:

/objects/?page=last

これによって、自分で何ページ存在するかを調べることなく、最後のページにアクセスすることができます。

注意すべきなのは、page は有効なページ数ないし値 lastどちらかでなければならない ことです。page に対する他の値はすべて 404 エラーとなります。

Extends

メソッドと属性

allow_empty

有効なオブジェクトが 1 つもない場合にページを表示するかどうかを指定する真偽値です。False に指定してオブジェクトが存在しない場合、空のページの代わりに 404 を投げます。デフォルトは True です。

model

このビューがデータを表示する対象のモデルです。model = Foo と指定することは、queryset = Foo.objects.all() の効率的な書き方で、 objectsFooデフォルトマネージャ を表します。

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

The paginator class to be used for pagination. By default, django.core.paginator.Paginator is used. If the custom paginator class doesn't have the same constructor interface as django.core.paginator.Paginator, you will also need to provide an implementation for get_paginator().

context_object_name

Designates the name of the variable to use in the context.

get_queryset()

このビューのための項目のリストを取得します。これは必ずイテラブルにするべきであり、クエリセットにされることが多いです(クエリセット特有の挙動を有効にするため)。

get_ordering()

queryset に適用される順序を定義する、文字列(または文字列のイテラブル)を返します。

Returns ordering by default.

paginate_queryset(queryset, page_size)

Returns a 4-tuple containing (paginator, page, object_list, is_paginated).

Constructed by paginating queryset into pages of size page_size. If the request contains a page argument, either as a captured URL argument or as a GET argument, object_list will correspond to the objects from that page.

get_paginate_by(queryset)

Returns the number of items to paginate by, or None for no pagination. By default this returns the value of paginate_by.

get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)

Returns an instance of the paginator to use for this view. By default, instantiates an instance of paginator_class.

get_paginate_orphans()

An integer specifying the number of "overflow" objects the last page can contain. By default this returns the value of paginate_orphans.

get_allow_empty()

Return a boolean specifying whether to display the page if no objects are available. If this method returns False and no objects are available, the view will raise a 404 instead of displaying an empty page. By default, this is True.

get_context_object_name(object_list)

このビューが操作しているデータのリストを格納するために使用される、コンテキストの変数名を返します。もし object_list がDjangoオブジェクトのクエリセットであり、 context_object_name が設定されていない場合、コンテキスト名はクエリセットを構成するモデルの model_name となり、接尾語として '_list' が付記されます。たとえば、 Article モデルなら article_list という名前のコンテキストオブジェクトを保持します。

get_context_data(**kwargs)

Returns context data for displaying the list of objects.

コンテキスト

  • object_list: The list of objects that this view is displaying. If context_object_name is specified, that variable will also be set in the context, with the same value as object_list.
  • is_paginated: A boolean representing whether the results are paginated. Specifically, this is set to False if no page size has been specified, or if the available objects do not span multiple pages.
  • paginator: An instance of django.core.paginator.Paginator. If the page is not paginated, this context variable will be None.
  • page_obj: An instance of django.core.paginator.Page. If the page is not paginated, this context variable will be None.

MultipleObjectTemplateResponseMixin

class django.views.generic.list.MultipleObjectTemplateResponseMixin

A mixin class that performs template-based response rendering for views that operate upon a list of object instances. Requires that the view it is mixed with provides self.object_list, the list of object instances that the view is operating on. self.object_list may be, but is not required to be, a QuerySet.

Extends

メソッドと属性

template_name_suffix

The suffix to append to the auto-generated candidate template name. Default suffix is _list.

get_template_names()

Returns a list of candidate template names. Returns the following list:

  • the value of template_name on the view (if provided)
  • <app_label>/<model_name><template_name_suffix>.html