{"title":"django.contrib.postgres","version":"1.8","locale":"en","docname":"ref/contrib/postgres/index","url":"/en/1.8/ref/contrib/postgres/","canonical":"https://djangodocs.dev/en/1.8/ref/contrib/postgres/","summary":"New in Django 1.8 PostgreSQL has a number of features which are not shared by the other databases Django supports. This optional module contains model fields and…","html":"<span id=\"django-contrib-postgres\"></span><h1><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres</span></code><a class=\"heading-anchor\" href=\"#module-django.contrib.postgres\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<aside class=\"version-note version-added\" data-version=\"1.8\">\n<p class=\"version-note-title\">New in Django 1.8</p></aside>\n<p>PostgreSQL has a number of features which are not shared by the other databases\nDjango supports. This optional module contains model fields and form fields for\na number of PostgreSQL specific data types.</p>\n<p>Psycopg2 2.5 or higher is required.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Django is, and will continue to be, a database-agnostic web framework. We\nwould encourage those writing reusable applications for the Django\ncommunity to write database-agnostic code where practical. However, we\nrecognize that real world projects written using Django need not be\ndatabase-agnostic. In fact, once a project reaches a given size changing\nthe underlying data store is already a significant challenge and is likely\nto require changing the code base in some ways to handle differences\nbetween the data stores.</p>\n<p>Django provides support for a number of data types which will\nonly work with PostgreSQL. There is no fundamental reason why (for example)\na <code class=\"docutils literal notranslate\"><span class=\"pre\">contrib.mysql</span></code> module does not exist, except that PostgreSQL has the\nrichest feature set of the supported databases so its users have the most\nto gain.</p>\n</aside>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/fields/\">PostgreSQL specific model fields</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/fields/#arrayfield\">ArrayField</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/fields/#hstorefield\">HStoreField</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/fields/#range-fields\">Range Fields</a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/forms/\">PostgreSQL specific form fields and widgets</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/forms/#simplearrayfield\">SimpleArrayField</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/forms/#splitarrayfield\">SplitArrayField</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/forms/#hstorefield\">HStoreField</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/forms/#range-fields\">Range Fields</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/forms/#widgets\">Widgets</a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/lookups/\">PostgreSQL specific lookups</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/lookups/#unaccent\">Unaccent</a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/operations/\">Database migration operations</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/operations/#createextension\">CreateExtension</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/operations/#hstoreextension\">HStoreExtension</a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/operations/#unaccentextension\">UnaccentExtension</a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/validators/\">Validators</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/validators/#keysvalidator\"><code class=\"docutils literal notranslate\"><span class=\"pre\">KeysValidator</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/en/1.8/ref/contrib/postgres/validators/#range-validators\">Range validators</a></li>\n</ul>\n</li>\n</ul>\n</div>","rootId":"module-django.contrib.postgres","toc":[],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/en/1.8/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/en/1.8/ref/contrib/"}],"prev":{"docname":"ref/contrib/messages","title":"The messages framework","url":"/en/1.8/ref/contrib/messages/"},"next":{"docname":"ref/contrib/postgres/fields","title":"PostgreSQL specific model fields","url":"/en/1.8/ref/contrib/postgres/fields/"},"formats":{"html":"/en/1.8/ref/contrib/postgres/","markdown":"/en/1.8/ref/contrib/postgres.md","json":"/en/1.8/ref/contrib/postgres.json"},"source":"https://github.com/django/django/blob/stable/1.8.x/docs/ref/contrib/postgres/index.txt","official":"https://docs.djangoproject.com/en/1.8/ref/contrib/postgres/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9","1.8"],"inLocales":["en"]}