mirror of
				https://github.com/django/django.git
				synced 2025-10-26 07:06:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =============================
 | |
| Database migration operations
 | |
| =============================
 | |
| 
 | |
| All of these :doc:`operations </ref/migration-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``
 | |
| ===================
 | |
| 
 | |
| .. class:: CreateExtension(name)
 | |
| 
 | |
|     An ``Operation`` subclass which installs PostgreSQL extensions.
 | |
| 
 | |
|     .. attribute:: name
 | |
| 
 | |
|         This is a required argument. The name of the extension to be installed.
 | |
| 
 | |
| ``BtreeGinExtension``
 | |
| =====================
 | |
| 
 | |
| .. class:: BtreeGinExtension()
 | |
| 
 | |
|     .. versionadded:: 1.11
 | |
| 
 | |
|     Install the ``btree_gin`` extension.
 | |
| 
 | |
| ``CITextExtension``
 | |
| ===================
 | |
| 
 | |
| .. class:: CITextExtension()
 | |
| 
 | |
|     .. versionadded:: 1.11
 | |
| 
 | |
|     Installs the ``citext`` extension.
 | |
| 
 | |
| ``CryptoExtension``
 | |
| ===================
 | |
| 
 | |
| .. class:: CryptoExtension()
 | |
| 
 | |
|     .. versionadded:: 2.0
 | |
| 
 | |
|     Installs the ``pgcrypto`` extension.
 | |
| 
 | |
| ``HStoreExtension``
 | |
| ===================
 | |
| 
 | |
| .. class:: HStoreExtension()
 | |
| 
 | |
|     Installs the ``hstore`` extension and also sets up the connection to
 | |
|     interpret hstore data for possible use in subsequent migrations.
 | |
| 
 | |
| ``TrigramExtension``
 | |
| ====================
 | |
| 
 | |
| .. class:: TrigramExtension()
 | |
| 
 | |
|     Installs the ``pg_trgm`` extension.
 | |
| 
 | |
| ``UnaccentExtension``
 | |
| =====================
 | |
| 
 | |
| .. class:: UnaccentExtension()
 | |
| 
 | |
|     Installs the ``unaccent`` extension.
 |