# Documentation Django 3.1.9.dev

# `django.contrib.postgres`

PostgreSQL comporte un certain nombre de fonctionnalités non gérées par les autres bases de données prises en charge par Django. Ce module facultatif contient des champs de modèle et de formulaire pour un certain nombre de types de données spécifiques à Django.

Note

Django est et continuera d’être un système Web indépendant de la base de données utilisée. Nous encourageons les rédacteurs d’applications réutilisables à destination de la communauté Django à écrire du code indépendant de la base de données autant que possible. Cependant, il faut reconnaître que des projets réels écrits avec Django n’ont pas toujours besoin de rester indépendants de la base de données. En fait, du moment qu’un projet atteint une certaine taille, le changement du stockage des données sous-jacent représente déjà un défi conséquent et va probablement exiger des modifications de la base de code de manière à tenir compte de différences entre les systèmes de stockage de données.

Django offre une prise en charge de certains types de données qui ne fonctionneront qu’avec PostgreSQL. Il n’y a par exemple pas de raison fondamentale qu’un module `contrib.mysql` n’existe pas, sauf que PostgreSQL possède le plus riche ensemble de fonctionnalités de toutes les bases de données prises en charge ; ce sont donc ses utilisateurs qui ont le plus à gagner.

- Fonctions d’agrégation spécifiques à PostgreSQL
  - Fonctions d’agrégation d’ordre général
  - Fonctions d’agrégation à but statistique
  - Exemples d’utilisation
- Contraintes de bases de données spécifiques à PostgreSQL
  - `ExclusionConstraint`
- Champs de modèles spécifiques à PostgreSQL
  - Indexation de ces champs
  - `ArrayField`
  - Champs `CIText`
  - `HStoreField`
  - `JSONField`
  - Champs d’intervalle
- Champs et composants de formulaires spécifiques à PostgreSQL
  - Champs
  - Composants de formulaires (« widgets »)
- Fonctions de bases de données spécifiques à PostgreSQL
  - `RandomUUID`
  - `TransactionNow`
- Index de modèles spécifiques à PostgreSQL
  - `BloomIndex`
  - `BrinIndex`
  - `BTreeIndex`
  - `GinIndex`
  - `GistIndex`
  - `HashIndex`
  - `SpGistIndex`
- Recherches spécifiques à PostgreSQL
  - Similarité par trigramme
  - `Unaccent`
- Opérations de migration de base de données
  - Création d’extension à l’aide des migrations
  - `CreateExtension`
  - `BloomExtension`
  - `BtreeGinExtension`
  - `BtreeGistExtension`
  - `CITextExtension`
  - `CryptoExtension`
  - `HStoreExtension`
  - `TrigramExtension`
  - `UnaccentExtension`
  - Opérations d’index concurrentes
- Recherche plein texte
  - L’expression de recherche `search`
  - `SearchVector`
  - `SearchQuery`
  - `SearchRank`
  - `SearchHeadline`
  - Modification de la configuration de recherche
  - Pondération des requêtes
  - Performance
  - Similarité par trigramme
- Validateurs
  - `KeysValidator`
  - Validateurs d’intervalle