2016-04-14 14 views
5

Così nei documenti Django per la creazione di nuovi campi su PostgreSQL si dice (Full description):Django ArrayField nulla = True migrazione con PostgreSQL

... si consiglia di creare sempre nuove colonne con null=True, in quanto in questo modo si sarà aggiunto immediatamente.

Cosa devo fare se voglio creare un ArrayField, qualcosa di simile:

tags = ArrayField(models.CharField(max_length=255, blank=True, default=''), default=list, null=True) 

Dovrei passare anche null=True in CharField che è all'interno di questa ArrayField?

+2

Dalla lettura di https://docs.djangoproject.com/es/1.9/ref/contrib/postgres/fields/#arrayfield mi sembra che sia necessario rendere nullo il valore effettivo di 'ArrayField', come il * base_field * è usato solo per tipo, validazione ecc. –

+0

Nota che se imposti 'null = True', probabilmente vorrai anche impostare' blank = True'. Altrimenti si otterranno errori durante la pulizia dei moduli del modello. –

risposta

3

Non penso che l'impostazione null=True sul tipo interno dia alcun vantaggio. La nota nei documenti a cui fai riferimento si applica solo alla colonna stessa, quindi finché il valore ArrayField è nullo, il database non dovrà eseguire una riscrittura completa della tabella.

Se si consente il tipo interno null, sarà necessario gestirlo nel codice, che potrebbe non essere esattamente quello che si desidera.

Problemi correlati