From 4de8aaf7ffc91b91cbb70e9db406abe9b160575a Mon Sep 17 00:00:00 2001 From: ntuckovic Date: Sat, 5 Nov 2016 14:18:11 +0100 Subject: [PATCH] =?UTF-8?q?Fixed=20#27355=20--=20Added=20=E2=80=9CCreating?= =?UTF-8?q?=20extension=20using=20migrations=E2=80=9D=20docs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ref/contrib/postgres/fields.txt | 23 ++---------------- docs/ref/contrib/postgres/operations.txt | 31 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/docs/ref/contrib/postgres/fields.txt b/docs/ref/contrib/postgres/fields.txt index 93f14fcca07..7c756655ce1 100644 --- a/docs/ref/contrib/postgres/fields.txt +++ b/docs/ref/contrib/postgres/fields.txt @@ -281,27 +281,8 @@ A more useful index is a ``GIN`` index, which you should create using a To use this field, you'll need to: 1. Add ``'django.contrib.postgres'`` in your :setting:`INSTALLED_APPS`. - 2. Setup the hstore extension in PostgreSQL before the first ``CreateModel`` - or ``AddField`` operation by adding a migration with the - :class:`~django.contrib.postgres.operations.HStoreExtension` operation. - For example:: - - from django.contrib.postgres.operations import HStoreExtension - - class Migration(migrations.Migration): - ... - - operations = [ - HStoreExtension(), - ... - ] - - Creating the extension requires a database user with superuser - privileges. If the Django database user doesn't have superuser - privileges, you'll have to create the extension outside of Django - migrations with a user that has the appropriate privileges. In that - case, connect to your Django database and run the query - ``CREATE EXTENSION IF NOT EXISTS hstore;`` + 2. :ref:`Setup the hstore extension ` in + PostgreSQL. You'll see an error like ``can't adapt type 'dict'`` if you skip the first step, or ``type "hstore" does not exist`` if you skip the second. diff --git a/docs/ref/contrib/postgres/operations.txt b/docs/ref/contrib/postgres/operations.txt index 4dcc85105f5..eecac388a66 100644 --- a/docs/ref/contrib/postgres/operations.txt +++ b/docs/ref/contrib/postgres/operations.txt @@ -5,6 +5,37 @@ Database migration operations All of these :doc:`operations ` are available from the ``django.contrib.postgres.operations`` module. +.. _create-postgresql-extensions: + +Creating extension using migrations +=================================== + +You can create a PostgreSQL extension in your database using a migration file. +This example creates an hstore extension, but the same principles apply for +other extensions. + +Set up the hstore extension in PostgreSQL before the first ``CreateModel`` +or ``AddField`` operation that involves +:class:`~django.contrib.postgres.fields.HStoreField` by adding a migration with +the :class:`~django.contrib.postgres.operations.HStoreExtension` operation. +For example:: + + from django.contrib.postgres.operations import HStoreExtension + + class Migration(migrations.Migration): + ... + + operations = [ + HStoreExtension(), + ... + ] + +Creating the extension requires a database user with superuser privileges. +If the Django database user doesn't have superuser privileges, you'll have +to create the extension outside of Django migrations with a user that has +the appropriate privileges. In that case, connect to your Django database and +run the query ``CREATE EXTENSION IF NOT EXISTS hstore;``. + .. currentmodule:: django.contrib.postgres.operations ``CreateExtension``