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.
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)
contrib.mysql module does not exist, except that PostgreSQL has the
richest feature set of the supported databases so its users have the most
- PostgreSQL specific aggregation functions
- PostgreSQL specific database constraints
- PostgreSQL specific query expressions
- PostgreSQL specific model fields
- PostgreSQL specific form fields and widgets
- PostgreSQL specific database functions
- PostgreSQL specific model indexes
- PostgreSQL specific lookups
- Database migration operations
- Full text search