===========================
``django.contrib.postgres``
===========================

.. module:: django.contrib.postgres
    :synopsis: PostgreSQL-specific fields and features

PostgreSQL has a number of features which are not shared by the other databases
Django supports. This optional module contains model fields and form fields for
a number of PostgreSQL specific data types.

.. note::
    Django is, and will continue to be, a database-agnostic web framework. We
    would encourage those writing reusable applications for the Django
    community to write database-agnostic code where practical. However, we
    recognize that real world projects written using Django need not be
    database-agnostic. In fact, once a project reaches a given size changing
    the underlying data store is already a significant challenge and is likely
    to require changing the code base in some ways to handle differences
    between the data stores.

    Django provides support for a number of data types which will
    only work with PostgreSQL. There is no fundamental reason why (for example)
    a ``contrib.mysql`` module does not exist, except that PostgreSQL has the
    richest feature set of the supported databases so its users have the most
    to gain.

.. toctree::
    :maxdepth: 2

    aggregates
    constraints
    expressions
    fields
    forms
    functions
    indexes
    lookups
    operations
    search
    validators
