Todas estas operaciones están disponibles desde el módulo django.contrib.postgres.operations.
Puedes crear una extensión de PostgreSQL en tu base de datos mediante un archivo de migración. Este ejemplo crea una extensión hstore, pero los mismos principios se aplican a otras extensiones.
Configura la extensión hstore en PostgreSQL antes de la primera operación CreateModel o AddField que involucre el campo HStoreField agregando una migración con la operación HStoreExtension. Por ejemplo:
from django.contrib.postgres.operations import HStoreExtension
class Migration(migrations.Migration):
...
operations = [HStoreExtension(), ...]
La operación omite agregar la extensión si ya existe.
Para la mayoría de las extensiones, esto requiere un usuario de base de datos con privilegios superuser. Si el usuario de la base de datos de Django no tiene los privilegios adecuados, tendrá que crear la extensión fuera de las migraciones de Django con un usuario que tenga esos privilegios. En ese caso, conecta a tu base de datos de Django y ejecuta la consulta CREATE EXTENSION IF NOT EXISTS hstore;.
CreateExtension¶BloomExtension¶BtreeGinExtension¶BtreeGistExtension¶CITextExtension¶CryptoExtension¶HStoreExtension¶TrigramExtension¶UnaccentExtension¶Si necesitas filtrar o ordenar una columna utilizando una determinada collación que proporciona tu sistema operativo pero no PostgreSQL, puedes gestionar las collaciones en tu base de datos mediante un archivo de migración. Estas collaciones pueden utilizarse luego con el parámetro db_collation en CharField, TextField y sus subclases.
Para crear una collación para el ordenamiento de un libro telefónico alemán:
from django.contrib.postgres.operations import CreateCollation
class Migration(migrations.Migration):
...
operations = [
CreateCollation(
"case_insensitive",
provider="icu",
locale="und-u-ks-level2",
deterministic=False,
),
...,
]
Crea una collación con el nombre dado name, locale y provider.
Establece el parámetro deterministic en False para crear una collación no determinista, como para filtrado caso-insensible.
Elimina las collaciones llamadas name.
Al invertir esto se crea una collación con los argumentos de locale, provider y deterministic proporcionados. Por lo tanto, locale es necesario para hacer que esta operación sea reversible.
PostgreSQL admite la opción CONCURRENTLY en las sentencias CREATE INDEX y DROP INDEX para agregar e eliminar índices sin bloquear escrituras. Esta opción es útil para agregar o eliminar un índice en una base de datos de producción activa.
Como AddIndex, pero crea un índice con la opción CONCURRENTLY. Esto tiene algunas limitaciones que debes tener en cuenta al utilizar esta opción, véase la documentación de PostgreSQL sobre construcción de índices concurrentemente.
Como RemoveIndex, pero elimina el índice con la opción CONCURRENTLY. Esto tiene algunas limitaciones que debes tener en cuenta al utilizar esta opción, véase la documentación de PostgreSQL.
Nota
La opción CONCURRENTLY no está soportada dentro de una transacción (véase migraciones no atómicas).
PostgreSQL admite la opción NOT VALID con el comando ADD CONSTRAINT para agregar restricciones de verificación sin aplicar la validación a las filas existentes. Esta opción es útil si deseas saltarte el potencialmente largo escaneo de la tabla para verificar que todas las filas existentes satisfagan la restricción.
Para validar las restricciones de verificación creadas con la opción NOT VALID en un momento posterior, utilice la operación ValidateConstraint.
Ver la documentación de PostgreSQL <https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-NOTES> para obtener más detalles.
Al igual que AddConstraint, pero evita la validación de la restricción en filas existentes.
Revisa la tabla y valida la restricción de verificación dada en las filas existentes.
Nota
Las operaciones AddConstraintNotValid y ValidateConstraint deben realizarse en dos migraciones separadas. Realizar ambas operaciones en la misma migración atómica tiene el mismo efecto que AddConstraint, mientras que realizarlas en una sola migración no atómica puede dejar tu base de datos en un estado inconsistente si la operación ValidateConstraint falla.
may 31, 2026