Migrering av databaserLink to this heading

Alla dessa operationer är tillgängliga från modulen django.contrib.postgres.operations.

Skapa tillägg med hjälp av migreringarLink to this heading

Du kan skapa ett PostgreSQL-tillägg i din databas med hjälp av en migreringsfil. Detta exempel skapar en hstore-förlängning, men samma principer gäller för andra tillägg.

Ställ in hstore-tillägget i PostgreSQL före den första CreateModel eller AddField -operationen som involverar HStoreField genom att lägga till en migrering med HStoreExtension -operationen. Till exempel:

Code
from django.contrib.postgres.operations import HStoreExtension


class Migration(migrations.Migration):
    ...

    operations = [HStoreExtension(), ...]

Operationen hoppar över att lägga till tillägget om det redan finns.

För de flesta tillägg kräver detta en databasanvändare med superanvändarrättigheter. Om Django-databasanvändaren inte har lämpliga privilegier måste du skapa tillägget utanför Django-migreringar med en användare som har dem. I så fall ansluter du till din Django-databas och kör frågan CREATE EXTENSION IF NOT EXISTS hstore;.

CreateExtensionLink to this heading

class CreateExtension(name)Link to this definition

En `` Operation `` underklass som installerar en PostgreSQL-förlängning. För vanliga tillägg, använd en av de mer specifika underklasserna nedan.

nameLink to this definition

Detta är ett obligatoriskt argument. Namnet på det tillägg som ska installeras.

BloomExtensionLink to this heading

class BloomExtensionLink to this definition

Installerar tillägget bloom.

BtreeGinExtensionLink to this heading

class BtreeGinExtensionLink to this definition

Installerar tillägget btree_gin.

BtreeGistExtensionLink to this heading

class BtreeGistExtensionLink to this definition

Installerar tillägget btree_gist.

CITextExtensionLink to this heading

class CITextExtensionLink to this definition

Installerar tillägget citext.

CryptoExtensionLink to this heading

class CryptoExtensionLink to this definition

Installerar tillägget pgcrypto.

HStoreExtensionLink to this heading

class HStoreExtensionLink to this definition

Installerar tillägget hstore och konfigurerar även anslutningen för att tolka hstore-data för eventuell användning i efterföljande migreringar.

TrigramExtensionLink to this heading

class TrigramExtensionLink to this definition

Installerar tillägget pg_trgm.

UnaccentExtensionLink to this heading

class UnaccentExtensionLink to this definition

Installerar tillägget unaccent.

Hantera kollationer med hjälp av migreringarLink to this heading

Om du behöver filtrera eller beställa en kolumn med en viss kollationering som ditt operativsystem tillhandahåller men PostgreSQL inte gör det, kan du hantera kollationer i din databas med hjälp av en migreringsfil. Dessa kollationer kan sedan användas med parametern db_collationCharField, TextField, och deras underklasser.

Till exempel:, för att skapa en kollationering för tysk telefonkatalogbeställning:

Code
from django.contrib.postgres.operations import CreateCollation


class Migration(migrations.Migration):
    ...

    operations = [
        CreateCollation(
            "case_insensitive",
            provider="icu",
            locale="und-u-ks-level2",
            deterministic=False,
        ),
        ...,
    ]
class CreateCollation(name, locale, *, provider='libc', deterministic=True)Link to this definition

Skapar en kollationering med de angivna name, locale och provider.

Sätt parametern deterministic till False för att skapa en icke-deterministisk kollationering, t.ex. för skiftlägesokänslig filtrering.

class RemoveCollation(name, locale, *, provider='libc', deterministic=True)Link to this definition

Tar bort de kollationer som heter namn.

När den reverseras skapar detta en kollationering med de angivna argumenten locale, provider och deterministic. Därför krävs locale för att göra denna operation reversibel.

Samtidiga indexoperationerLink to this heading

PostgreSQL stöder alternativet CONCURRENTLY till CREATE INDEX och DROP INDEX uttalanden för att lägga till och ta bort index utan att låsa ut skrivningar. Det här alternativet är användbart för att lägga till eller ta bort ett index i en live produktionsdatabas.

class AddIndexConcurrently(model_name, index)Link to this definition

Som AddIndex, men skapar ett index med alternativet CONCURRENTLY. Detta har några försiktighetsåtgärder att vara medveten om när du använder det här alternativet, se `` PostgreSQL-dokumentationen för att bygga index samtidigt <https://www.postgresql.org/docs/current/ sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY>`_.

class RemoveIndexConcurrently(model_name, name)Link to this definition

Som RemoveIndex, men tar bort indexet med alternativet CONCURRENTLY. Detta har några varningar att vara medvetna om när du använder det här alternativet, se PostgreSQL-dokumentationen.

Lägga till begränsningar utan att tvinga fram valideringLink to this heading

PostgreSQL stöder alternativet `` INOT VALID`` med uttalandet `` ADD CONSTRAINT`` för att lägga till kontrollbegränsningar utan att genomdriva validering på befintliga rader. Det här alternativet är användbart om du vill hoppa över den potentiellt långa genomsökningen av tabellen för att verifiera att alla befintliga rader uppfyller begränsningen.

Om du vill validera kontrollbegränsningar som skapats med alternativet NOT VALID vid en senare tidpunkt använder du operationen ValidateConstraint.

Se ”PostgreSQL-dokumentationen <https://www.postgresql.org/docs/current/ sql-altertable.html#SQL-ALTERTABLE-NOTES>`__ för mer information.

class AddConstraintNotValid(model_name, constraint)Link to this definition

Som AddConstraint, men undviker att validera begränsningen på befintliga rader.

class ValidateConstraint(model_name, name)Link to this definition

Skannar igenom tabellen och validerar den angivna kontrollbegränsningen på befintliga rader.