# Django 3.2.11.dev 文档

# `django.contrib.postgres`

PostgreSQL 有许多 Django 支持的数据库所不具备的特性。这个可选的模块包含了一些 PostgreSQL 特有数据类型的模型字段和表单字段。

注解

Django 是，并将继续是一个与数据库无关的网络框架。我们鼓励那些为 Django 社区编写可重用的应用程序的人，在可行的情况下编写数据库无关的代码。然而，我们也认识到，在现实世界中，使用 Django 编写的项目不一定是数据库无关的。事实上，一旦一个项目达到一定的规模，改变底层数据存储已经是一个重大的挑战，很可能需要通过一些方式改变代码库来处理数据存储之间的差异。

Django 提供了对一些数据类型的支持，这些数据类型只能在 PostgreSQL 中使用。除了 PostgreSQL 在支持的数据库中拥有最丰富的功能，所以它的用户可以获得最大的收益之外，没有任何根本的原因（例如）不存在 `contrib.mysql` 模块。

- PostgreSQL 特有聚合函数
  - 通用聚合函数
  - 统计的聚合功能
  - 使用实例：
- PostgreSQL 特有数据库约束
  - `ExclusionConstraint`
- PostgreSQL 特有模型字段
  - 对这些字段进行索引
  - `ArrayField`
  - `CIText` 字段
  - `HStoreField`
  - `JSONField`
  - 范围字段
- PostgreSQL 特有表单字段和部件
  - 字段
  - 部件
- PostgreSQL 特有数据库函数
  - `RandomUUID`
  - `TransactionNow`
- PostgreSQL 特有模型索引
  - `BloomIndex`
  - `BrinIndex`
  - `BTreeIndex`
  - `GinIndex`
  - `GistIndex`
  - `HashIndex`
  - `SpGistIndex`
  - `OpClass()` 表达式
- PostgreSQL 特有查找
  - 三元相似度
  - `Unaccent`
- 数据库迁移操作
  - 使用迁移创建扩展
  - `CreateExtension`
  - `BloomExtension`
  - `BtreeGinExtension`
  - `BtreeGistExtension`
  - `CITextExtension`
  - `CryptoExtension`
  - `HStoreExtension`
  - `TrigramExtension`
  - `UnaccentExtension`
  - 使用迁移来管理整理
  - 并发索引操作
- 全文搜索
  - `search` 查找
  - `SearchVector`
  - `SearchQuery`
  - `SearchRank`
  - `SearchHeadline`
  - 更改搜索配置
  - 加权查询
  - 性能
  - 三元相似度
- 验证器
  - `KeysValidator`
  - 范围验证器