---
title: "Expressions de requête spécifiques à PostgreSQL"
version: 5.0
locale: fr
source: https://docs.djangoproject.com/fr/5.0/ref/contrib/postgres/expressions/
canonical: https://djangodocs.dev/fr/5.0/ref/contrib/postgres/expressions/
---
# Expressions de requête spécifiques à PostgreSQL

Ces expressions sont disponibles dans le module `django.contrib.postgres.expressions`.

## Expressions `ArraySubquery()`

#### `class ArraySubquery(queryset)`

`ArraySubquery` est une sous-requête [`Subquery`](/fr/5.0/ref/models/expressions/#django.db.models.Subquery) qui utilise le constructeur PostgreSQL `ARRAY` pour construire une liste de valeurs du jeu de requêtem qui doit utiliser [`QuerySet.values()`](/fr/5.0/ref/models/querysets/#django.db.models.query.QuerySet.values) pour ne renvoyer qu’une seule colonne.

Cette classe diffère de [`ArrayAgg`](/fr/5.0/ref/contrib/postgres/aggregates/#django.contrib.postgres.aggregates.ArrayAgg) dans le sens où elle n’agit pas comme une fonction d’agrégat et n’exige pas de clause SQL `GROUP BY` pour construire la liste des valeurs.

Par exemple, si vous souhaitez annoter tous les livres liés à un auteur sous forme d’objet JSON :

```pycon
>>> from django.db.models import OuterRef
>>> from django.db.models.functions import JSONObject
>>> from django.contrib.postgres.expressions import ArraySubquery
>>> books = Book.objects.filter(author=OuterRef("pk")).values(
...     json=JSONObject(title="title", pages="pages")
... )
>>> author = Author.objects.annotate(books=ArraySubquery(books)).first()
>>> author.books
[{'title': 'Solaris', 'pages': 204}, {'title': 'The Cyberiad', 'pages': 295}]
```
