Fixed #27355 -- Added “Creating extension using migrations” docs.
This commit is contained in:
parent
e744c7e459
commit
4de8aaf7ff
|
@ -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:
|
To use this field, you'll need to:
|
||||||
|
|
||||||
1. Add ``'django.contrib.postgres'`` in your :setting:`INSTALLED_APPS`.
|
1. Add ``'django.contrib.postgres'`` in your :setting:`INSTALLED_APPS`.
|
||||||
2. Setup the hstore extension in PostgreSQL before the first ``CreateModel``
|
2. :ref:`Setup the hstore extension <create-postgresql-extensions>` in
|
||||||
or ``AddField`` operation by adding a migration with the
|
PostgreSQL.
|
||||||
: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;``
|
|
||||||
|
|
||||||
You'll see an error like ``can't adapt type 'dict'`` if you skip the first
|
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.
|
step, or ``type "hstore" does not exist`` if you skip the second.
|
||||||
|
|
|
@ -5,6 +5,37 @@ Database migration operations
|
||||||
All of these :doc:`operations </ref/migration-operations>` are available from
|
All of these :doc:`operations </ref/migration-operations>` are available from
|
||||||
the ``django.contrib.postgres.operations`` module.
|
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
|
.. currentmodule:: django.contrib.postgres.operations
|
||||||
|
|
||||||
``CreateExtension``
|
``CreateExtension``
|
||||||
|
|
Loading…
Reference in New Issue