---
title: "Classes mixins pour objets multiples"
version: 5.2
locale: fr
source: https://docs.djangoproject.com/fr/5.2/ref/class-based-views/mixins-multiple-object/
canonical: https://djangodocs.dev/fr/5.2/ref/class-based-views/mixins-multiple-object/
---
# Classes mixins pour objets multiples

## `MultipleObjectMixin`

#### `class django.views.generic.list.MultipleObjectMixin`

Une classe mixin pouvant être utilisée pour afficher une liste d’objets.

Si `paginate_by` est indiqué, Django pagine les résultats renvoyés par la vue. Il est possible d’indiquer le numéro de page dans l’URL de deux manières différentes :

- En utilisant le paramètre `page` dans la configuration d’URL. Par exemple, voici à quoi pourrait ressembler la configuration d’URL :

  ```
  path("objects/page<int:page>/", PaginatedView.as_view()),
  ```
- En passant le numéro de page comme paramètre dans la chaîne de requête de l’URL. Par exemple, une URL pourrait ressembler à ceci :

  ```text
  /objects/?page=3
  ```

Ces listes et valeurs sont indexées à partir de 1, et non 0, ce qui fait que la première page est représentée par la page `1`.

Pour plus de détails sur la pagination, lisez la [documentation sur la pagination](/fr/5.2/topics/pagination/).

Comme cas particulier, il est aussi permis d’utiliser `last` (dernier) comme valeur pour la variable `page`:

```text
/objects/?page=last
```

Cela permet d’accéder à la dernière page des résultats sans devoir d’abord déterminer le nombre total de pages.

Notez que `page` *doit* contenir un numéro de page valide ou la valeur `last`; toute autre valeur transmise à `page` produit une erreur 404.

**Étend**

- [`django.views.generic.base.ContextMixin`](/fr/5.2/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin)

**Méthodes et attributs**

#### `allow_empty`

Une valeur booléenne indiquant s’il faut afficher la page quand aucun objet n’est disponible. Si définie à `False` et qu’aucun objet n’est disponible, la vue génère une erreur 404 au lieu d’afficher une page vide. La valeur par défaut est `True`.

#### `model`

Le modèle pour lequel cette vue va afficher des données. Indiquer `model = Foo` revient au même que de définir `queryset = Foo.objects.all()`, où `objects` correspond au [gestionnaire par défaut](/fr/5.2/topics/db/managers/#default-managers) de `Foo`.

#### `queryset`

Un objet `QuerySet` représentant les objets. Lorsqu’elle est renseignée, la valeur de `queryset` écrase la valeur fournie pour [`model`](#django.views.generic.list.MultipleObjectMixin.model).

> **Warning**
>
> `queryset` est un attribut de classe avec une valeur *modifiable*, il faut donc être très prudent lorsqu’on l’utilise directement. Avant de l’utiliser, appelez sa méthode [`all()`](/fr/5.2/ref/models/querysets/#django.db.models.query.QuerySet.all) ou obtenez-la avec [`get_queryset()`](#django.views.generic.list.MultipleObjectMixin.get_queryset) qui se charge du clonage en arrière-plan.

#### `ordering`

Une chaîne ou une liste de chaînes indiquant l’ordre de tri à appliquer à `queryset`. Les valeurs possibles sont les mêmes que pour [`order_by()`](/fr/5.2/ref/models/querysets/#django.db.models.query.QuerySet.order_by).

#### `paginate_by`

Un nombre entier indiquant combien d’objets doivent être affichés par page. Lorsque cette valeur est présente, la vue pagine les objets avec `paginate_by` objets par page. La vue s’attend soit à ce que la chaîne de requête de l’URL contienne un paramètre `page` (par `request.GET`) ou qu’une variable `page` ait été définie dans la configuration d’URL.

#### `paginate_orphans`

Un nombre entier indiquant le nombre d’objets surnuméraires que la dernière page peut contenir. Cette valeur s’ajoute au nombre [`paginate_by`](#django.views.generic.list.MultipleObjectMixin.paginate_by) pour la dernière page, afin d’éviter que la dernière page contienne un très petit nombre d’objets.

#### `page_kwarg`

Une chaîne indiquant le nom à utiliser pour le paramètre de page. La vue s’attend à la présence de ce paramètre soit comme paramètre de la chaîne de requête de l’URL (via `request.GET`) ou comme variable nommée présente dans la configuration d’URL. La valeur par défaut est `page`.

#### `paginator_class`

La classe de pagination à utiliser pour effectuer la pagination. Par défaut, c’est [`django.core.paginator.Paginator`](/fr/5.2/ref/paginator/#django.core.paginator.Paginator) qui est utilisée. Si la classe de pagination personnalisée ne possède pas la même interface de constructeur que [`django.core.paginator.Paginator`](/fr/5.2/ref/paginator/#django.core.paginator.Paginator), vous devrez également fournir une implémentation pour [`get_paginator()`](#django.views.generic.list.MultipleObjectMixin.get_paginator).

#### `context_object_name`

Désigne le nom de la variable à utiliser dans le contexte.

#### `get_queryset()`

Obtient la liste des éléments de la vue. Ce résultat doit être itérable et peut contenir un jeu de requête (pour lequel le comportement spécifique des jeux de requête est activé).

#### `get_ordering()`

Renvoie une chaîne (ou une liste de chaînes) définissant le tri qui sera appliqué à `queryset`.

Renvoie [`ordering`](#django.views.generic.list.MultipleObjectMixin.ordering) par défaut.

#### `paginate_queryset(queryset, page_size)`

Renvoie un tuple à 4 éléments contenant (`paginator`, `page`, `object_list`, `is_paginated`).

Construit en paginant `queryset` en pages de taille `page_size`. Si la requête contient un paramètre `page`, soit comme paramètre capturé dans l’URL ou sous forme de paramètre GET, `object_list` correspondra aux objets de cette page.

#### `get_paginate_by(queryset)`

Renvoie le nombre d’éléments sur lequel baser la pagination, ou `None` pour éviter la pagination. Par défaut, cela renvoie la valeur de [`paginate_by`](#django.views.generic.list.MultipleObjectMixin.paginate_by).

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

Renvoie une instance de la classe de pagination à utiliser pour cette vue. Par défaut, une instance de [`paginator_class`](#django.views.generic.list.MultipleObjectMixin.paginator_class) est renvoyée.

#### `get_paginate_orphans()`

Un nombre entier indiquant le nombre d’objets surnuméraires que la dernière page peut contenir. Par défaut, c’est la valeur de [`paginate_orphans`](#django.views.generic.list.MultipleObjectMixin.paginate_orphans) qui est renvoyée.

#### `get_allow_empty()`

Renvoie une valeur booléenne indiquant s’il faut afficher la page quand aucun objet n’est disponible. Si cette méthode renvoie `False` et qu’aucun objet n’est disponible, la vue produit une erreur 404 au lieu d’afficher une page vide. La valeur par défaut est `True`.

#### `get_context_object_name(object_list)`

Renvoie le nom de la variable de contexte utilisée pour contenir la liste des données que cette vue manipule. Si `object_list` est un jeu de requête d’objets Django et que [`context_object_name`](#django.views.generic.list.MultipleObjectMixin.context_object_name) n’est pas défini, le nom du contexte correspondra au nom de modèle des objets contenus dans le jeu de requête, ajouté du suffixe  `'_list'`. Par exemple, pour le modèle `Article`, la variable de contexte sera nommée par défaut `article_list`.

#### `get_context_data(**kwargs)`

Renvoie les données du contexte pour afficher la liste des objets.

**Contexte**

- `object_list`: la liste des objets que cette vue va afficher. Si `context_object_name` est renseigné, cette variable sera également définie dans le contexte, avec le même contenu que `object_list`.
- `is_paginated`: une valeur booléenne indiquant si les résultats sont paginés. Plus particulièrement, `False` est renvoyé si aucune taille de page n’a été indiquée ou si les objets disponibles ne remplissent qu’une seule page.
- `paginator`: une instance de [`django.core.paginator.Paginator`](/fr/5.2/ref/paginator/#django.core.paginator.Paginator). Si les objets ne sont pas paginés, cette variable de contexte vaut `None`.
- `page_obj`: une instance de [`django.core.paginator.Page`](/fr/5.2/ref/paginator/#django.core.paginator.Page). Si les objets ne sont pas paginés, cette variable de contexte vaut `None`.

## `MultipleObjectTemplateResponseMixin`

#### `class django.views.generic.list.MultipleObjectTemplateResponseMixin`

Une classe mixin produisant une réponse basée sur un gabarit pour les vues opérant sur une liste d’instances d’objets. Exige que la vue dans laquelle elle est intégrée fournisse `self.object_list`, la liste des instances d’objets sur lesquelles la vue opère. `self.object_list` peut être un objet [`QuerySet`](/fr/5.2/ref/models/querysets/#django.db.models.query.QuerySet), mais ce n’est pas obligatoire.

**Étend**

- [`TemplateResponseMixin`](/fr/5.2/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)

**Méthodes et attributs**

#### `template_name_suffix`

Le suffixe à ajouter au nom de gabarit auto-généré. Le suffixe par défaut est `_list`.

#### `get_template_names()`

Renvoie une liste de noms de gabarits potentiels. Cette liste contient :

- la valeur de `template_name` de la vue (s’il est défini)
- `<nom_app>/<nom_modèle><suffixe_gabarit>.html`
