{"title":"Multiple object mixins","version":"4.2","locale":"en","docname":"ref/class-based-views/mixins-multiple-object","url":"/en/4.2/ref/class-based-views/mixins-multiple-object/","canonical":"https://djangodocs.dev/en/4.2/ref/class-based-views/mixins-multiple-object/","summary":"MultipleObjectMixin Link to this heading # class django.views.generic.list. MultipleObjectMixin Link to this definition # A mixin that can be used to display a list…","html":"<h1>Multiple object mixins<a class=\"heading-anchor\" href=\"#multiple-object-mixins\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"multipleobjectmixin\">\n<h2><code class=\"docutils literal notranslate\">MultipleObjectMixin</code><a class=\"heading-anchor\" href=\"#multipleobjectmixin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">django.views.generic.list.</span><span class=\"sig-name descname\">MultipleObjectMixin</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A mixin that can be used to display a list of objects.</p>\n<p>If <code class=\"docutils literal notranslate\">paginate_by</code> is specified, Django will paginate the results returned\nby this. You can specify the page number in the URL in one of two ways:</p>\n<ul>\n<li><p>Use the <code class=\"docutils literal notranslate\">page</code> parameter in the URLconf. For example, this is what\nyour URLconf might look like:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>path<span class=\"p\">(</span><span class=\"s2\">&quot;objects/page&lt;int:page&gt;/&quot;</span><span class=\"p\">,</span> PaginatedView<span class=\"o\">.</span>as_view<span class=\"p\">()),</span>\n</code></pre></div>\n</li>\n<li><p>Pass the page number via the <code class=\"docutils literal notranslate\">page</code> query-string parameter. For\nexample, a URL would look like this:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>/objects/?page=3\n</code></pre></div>\n</li>\n</ul>\n<p>These values and lists are 1-based, not 0-based, so the first page would be\nrepresented as page <code class=\"docutils literal notranslate\">1</code>.</p>\n<p>For more on pagination, read the <a class=\"reference internal\" href=\"/en/4.2/topics/pagination/\"><span class=\"doc\">pagination documentation</span></a>.</p>\n<p>As a special case, you are also permitted to use <code class=\"docutils literal notranslate\">last</code> as a value for\n<code class=\"docutils literal notranslate\">page</code>:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>/objects/?page=last\n</code></pre></div>\n<p>This allows you to access the final page of results without first having to\ndetermine how many pages there are.</p>\n<p>Note that <code class=\"docutils literal notranslate\">page</code> <em>must</em> be either a valid page number or the value\n<code class=\"docutils literal notranslate\">last</code>; any other value for <code class=\"docutils literal notranslate\">page</code> will result in a 404 error.</p>\n<p><strong>Extends</strong></p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/4.2/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin\" title=\"django.views.generic.base.ContextMixin\"><code class=\"xref py py-class docutils literal notranslate\">django.views.generic.base.ContextMixin</code></a></p></li>\n</ul>\n<p><strong>Methods and Attributes</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.allow_empty\">\n<span class=\"sig-name descname\">allow_empty</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.allow_empty\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A boolean specifying whether to display the page if no objects are\navailable. If this is <code class=\"docutils literal notranslate\">False</code> and no objects are available, the view\nwill raise a 404 instead of displaying an empty page. By default, this\nis <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.model\">\n<span class=\"sig-name descname\">model</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The model that this view will display data for. Specifying <code class=\"docutils literal notranslate\">model\n= Foo</code> is effectively the same as specifying <code class=\"docutils literal notranslate\">queryset =\nFoo.objects.all()</code>, where <code class=\"docutils literal notranslate\">objects</code> stands for <code class=\"docutils literal notranslate\">Foo</code>’s\n<a class=\"reference internal\" href=\"/en/4.2/topics/db/managers/#default-managers\"><span class=\"std std-ref\">default manager</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.queryset\">\n<span class=\"sig-name descname\">queryset</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.queryset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A <code class=\"docutils literal notranslate\">QuerySet</code> that represents the objects. If provided, the value of\n<code class=\"docutils literal notranslate\">queryset</code> supersedes the value provided for <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.model\" title=\"django.views.generic.list.MultipleObjectMixin.model\"><code class=\"xref py py-attr docutils literal notranslate\">model</code></a>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p><code class=\"docutils literal notranslate\">queryset</code> is a class attribute with a <em>mutable</em> value so care\nmust be taken when using it directly. Before using it, either call\nits <a class=\"reference internal\" href=\"/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet.all\" title=\"django.db.models.query.QuerySet.all\"><code class=\"xref py py-meth docutils literal notranslate\">all()</code></a> method or\nretrieve it with <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.get_queryset\" title=\"django.views.generic.list.MultipleObjectMixin.get_queryset\"><code class=\"xref py py-meth docutils literal notranslate\">get_queryset()</code></a> which takes care of the\ncloning behind the scenes.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.ordering\">\n<span class=\"sig-name descname\">ordering</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.ordering\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A string or list of strings specifying the ordering to apply to the <code class=\"docutils literal notranslate\">queryset</code>.\nValid values are the same as those for <a class=\"reference internal\" href=\"/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.paginate_by\">\n<span class=\"sig-name descname\">paginate_by</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.paginate_by\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>An integer specifying how many objects should be displayed per page. If\nthis is given, the view will paginate objects with\n<code class=\"docutils literal notranslate\">paginate_by</code> objects per page. The view will\nexpect either a <code class=\"docutils literal notranslate\">page</code> query string parameter (via <code class=\"docutils literal notranslate\">request.GET</code>)\nor a <code class=\"docutils literal notranslate\">page</code> variable specified in the URLconf.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.paginate_orphans\">\n<span class=\"sig-name descname\">paginate_orphans</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.paginate_orphans\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>An integer specifying the number of “overflow” objects the last page\ncan contain. This extends the <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.paginate_by\" title=\"django.views.generic.list.MultipleObjectMixin.paginate_by\"><code class=\"xref py py-attr docutils literal notranslate\">paginate_by</code></a> limit on the last\npage by up to <code class=\"docutils literal notranslate\">paginate_orphans</code>, in order to keep the last page from\nhaving a very small number of objects.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.page_kwarg\">\n<span class=\"sig-name descname\">page_kwarg</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.page_kwarg\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A string specifying the name to use for the page parameter.\nThe view will expect this parameter to be available either as a query\nstring parameter (via <code class=\"docutils literal notranslate\">request.GET</code>) or as a kwarg variable specified\nin the URLconf. Defaults to <code class=\"docutils literal notranslate\">page</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.paginator_class\">\n<span class=\"sig-name descname\">paginator_class</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.paginator_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The paginator class to be used for pagination. By default,\n<a class=\"reference internal\" href=\"/en/4.2/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">django.core.paginator.Paginator</code></a> is used. If the custom paginator\nclass doesn’t have the same constructor interface as\n<a class=\"reference internal\" href=\"/en/4.2/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">django.core.paginator.Paginator</code></a>, you will also need to\nprovide an implementation for <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.get_paginator\" title=\"django.views.generic.list.MultipleObjectMixin.get_paginator\"><code class=\"xref py py-meth docutils literal notranslate\">get_paginator()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.context_object_name\">\n<span class=\"sig-name descname\">context_object_name</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.context_object_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Designates the name of the variable to use in the context.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_queryset\">\n<span class=\"sig-name descname\">get_queryset</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_queryset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Get the list of items for this view. This must be an iterable and may\nbe a queryset (in which queryset-specific behavior will be enabled).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_ordering\">\n<span class=\"sig-name descname\">get_ordering</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_ordering\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a string (or iterable of strings) that defines the ordering that\nwill be applied to the <code class=\"docutils literal notranslate\">queryset</code>.</p>\n<p>Returns <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.ordering\" title=\"django.views.generic.list.MultipleObjectMixin.ordering\"><code class=\"xref py py-attr docutils literal notranslate\">ordering</code></a> by default.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.paginate_queryset\">\n<span class=\"sig-name descname\">paginate_queryset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">queryset</em>, <em class=\"sig-param\">page_size</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.paginate_queryset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a 4-tuple containing (<code class=\"docutils literal notranslate\">paginator</code>, <code class=\"docutils literal notranslate\">page</code>, <code class=\"docutils literal notranslate\">object_list</code>,\n<code class=\"docutils literal notranslate\">is_paginated</code>).</p>\n<p>Constructed by paginating <code class=\"docutils literal notranslate\">queryset</code> into pages of size <code class=\"docutils literal notranslate\">page_size</code>.\nIf the request contains a <code class=\"docutils literal notranslate\">page</code> argument, either as a captured URL\nargument or as a GET argument, <code class=\"docutils literal notranslate\">object_list</code> will correspond to the\nobjects from that page.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_paginate_by\">\n<span class=\"sig-name descname\">get_paginate_by</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">queryset</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_paginate_by\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the number of items to paginate by, or <code class=\"docutils literal notranslate\">None</code> for no\npagination. By default this returns the value of <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.paginate_by\" title=\"django.views.generic.list.MultipleObjectMixin.paginate_by\"><code class=\"xref py py-attr docutils literal notranslate\">paginate_by</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_paginator\">\n<span class=\"sig-name descname\">get_paginator</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">queryset</em>, <em class=\"sig-param\">per_page</em>, <em class=\"sig-param\">orphans<span class=\"o\">=</span><span class=\"default_value\">0</span></em>, <em class=\"sig-param\">allow_empty_first_page<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_paginator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns an instance of the paginator to use for this view. By default,\ninstantiates an instance of <a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.paginator_class\" title=\"django.views.generic.list.MultipleObjectMixin.paginator_class\"><code class=\"xref py py-attr docutils literal notranslate\">paginator_class</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_paginate_orphans\">\n<span class=\"sig-name descname\">get_paginate_orphans</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_paginate_orphans\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>An integer specifying the number of “overflow” objects the last page\ncan contain. By default this returns the value of\n<a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.paginate_orphans\" title=\"django.views.generic.list.MultipleObjectMixin.paginate_orphans\"><code class=\"xref py py-attr docutils literal notranslate\">paginate_orphans</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_allow_empty\">\n<span class=\"sig-name descname\">get_allow_empty</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_allow_empty\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Return a boolean specifying whether to display the page if no objects\nare available. If this method returns <code class=\"docutils literal notranslate\">False</code> and no objects are\navailable, the view will raise a 404 instead of displaying an empty\npage. By default, this is <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_context_object_name\">\n<span class=\"sig-name descname\">get_context_object_name</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">object_list</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_context_object_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Return the context variable name that will be used to contain\nthe list of data that this view is manipulating. If\n<code class=\"docutils literal notranslate\">object_list</code> is a queryset of Django objects and\n<a class=\"reference internal\" href=\"#django.views.generic.list.MultipleObjectMixin.context_object_name\" title=\"django.views.generic.list.MultipleObjectMixin.context_object_name\"><code class=\"xref py py-attr docutils literal notranslate\">context_object_name</code></a> is not set,\nthe context name will be the <code class=\"docutils literal notranslate\">model_name</code> of the model that\nthe queryset is composed from, with postfix <code class=\"docutils literal notranslate\">'_list'</code>\nappended. For example, the model <code class=\"docutils literal notranslate\">Article</code> would have a\ncontext object named <code class=\"docutils literal notranslate\">article_list</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectMixin.get_context_data\">\n<span class=\"sig-name descname\">get_context_data</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectMixin.get_context_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns context data for displaying the list of objects.</p>\n</dd></dl>\n\n<p><strong>Context</strong></p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">object_list</code>: The list of objects that this view is displaying. If\n<code class=\"docutils literal notranslate\">context_object_name</code> is specified, that variable will also be set\nin the context, with the same value as <code class=\"docutils literal notranslate\">object_list</code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\">is_paginated</code>: A boolean representing whether the results are\npaginated. Specifically, this is set to <code class=\"docutils literal notranslate\">False</code> if no page size has\nbeen specified, or if the available objects do not span multiple\npages.</p></li>\n<li><p><code class=\"docutils literal notranslate\">paginator</code>: An instance of\n<a class=\"reference internal\" href=\"/en/4.2/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">django.core.paginator.Paginator</code></a>. If the page is not\npaginated, this context variable will be <code class=\"docutils literal notranslate\">None</code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\">page_obj</code>: An instance of\n<a class=\"reference internal\" href=\"/en/4.2/ref/paginator/#django.core.paginator.Page\" title=\"django.core.paginator.Page\"><code class=\"xref py py-class docutils literal notranslate\">django.core.paginator.Page</code></a>. If the page is not paginated,\nthis context variable will be <code class=\"docutils literal notranslate\">None</code>.</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"multipleobjecttemplateresponsemixin\">\n<h2><code class=\"docutils literal notranslate\">MultipleObjectTemplateResponseMixin</code><a class=\"heading-anchor\" href=\"#multipleobjecttemplateresponsemixin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectTemplateResponseMixin\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">django.views.generic.list.</span><span class=\"sig-name descname\">MultipleObjectTemplateResponseMixin</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectTemplateResponseMixin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A mixin class that performs template-based response rendering for views\nthat operate upon a list of object instances. Requires that the view it is\nmixed with provides <code class=\"docutils literal notranslate\">self.object_list</code>, the list of object instances that\nthe view is operating on. <code class=\"docutils literal notranslate\">self.object_list</code> may be, but is not required\nto be, a <a class=\"reference internal\" href=\"/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>.</p>\n<p><strong>Extends</strong></p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/4.2/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin\" title=\"django.views.generic.base.TemplateResponseMixin\"><code class=\"xref py py-class docutils literal notranslate\">TemplateResponseMixin</code></a></p></li>\n</ul>\n<p><strong>Methods and Attributes</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix\">\n<span class=\"sig-name descname\">template_name_suffix</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The suffix to append to the auto-generated candidate template name.\nDefault suffix is <code class=\"docutils literal notranslate\">_list</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.list.MultipleObjectTemplateResponseMixin.get_template_names\">\n<span class=\"sig-name descname\">get_template_names</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.list.MultipleObjectTemplateResponseMixin.get_template_names\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a list of candidate template names. Returns the following list:</p>\n<ul class=\"simple\">\n<li><p>the value of <code class=\"docutils literal notranslate\">template_name</code> on the view (if provided)</p></li>\n<li><p><code class=\"docutils literal notranslate\">&lt;app_label&gt;/&lt;model_name&gt;&lt;template_name_suffix&gt;.html</code></p></li>\n</ul>\n</dd></dl>\n\n</dd></dl>\n\n</section>","rootId":"multiple-object-mixins","toc":[{"title":"MultipleObjectMixin","anchor":"multipleobjectmixin","children":[]},{"title":"MultipleObjectTemplateResponseMixin","anchor":"multipleobjecttemplateresponsemixin","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/en/4.2/ref/"},{"docname":"ref/class-based-views/index","title":"Built-in class-based views API","url":"/en/4.2/ref/class-based-views/"},{"docname":"ref/class-based-views/mixins","title":"Class-based views mixins","url":"/en/4.2/ref/class-based-views/mixins/"}],"prev":{"docname":"ref/class-based-views/mixins-single-object","title":"Single object mixins","url":"/en/4.2/ref/class-based-views/mixins-single-object/"},"next":{"docname":"ref/class-based-views/mixins-editing","title":"Editing mixins","url":"/en/4.2/ref/class-based-views/mixins-editing/"},"formats":{"html":"/en/4.2/ref/class-based-views/mixins-multiple-object/","markdown":"/en/4.2/ref/class-based-views/mixins-multiple-object.md","json":"/en/4.2/ref/class-based-views/mixins-multiple-object.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/ref/class-based-views/mixins-multiple-object.txt","official":"https://docs.djangoproject.com/en/4.2/ref/class-based-views/mixins-multiple-object/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9","1.8"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}