2016-04-14 10 views
5

So in Django docs für die Erstellung neuer Felder auf Postgresql sagt es (Full description):Django ArrayField null = True Migration mit Postgresql

... es wird empfohlen, Sie immer wieder neue Spalten mit null=True erstellen, wie diese Weise sie wird sofort hinzugefügt.

Was passiert, wenn ich eine ArrayField, um so etwas schaffen wollen:

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

Soll ich auch null=True in CharField passieren, die innerhalb dieser ArrayField ist?

+2

Aus dem Lesen von https://docs.djangoproject.com/es/1.9/ref/contrib/postgres/fields/#arrayfield würde es mir scheinen, Sie müssen nur die tatsächliche 'ArrayField' Nullable machen, als das * base_field * wird nur für Typ, Validierung usw. verwendet. –

+0

Beachten Sie, dass Sie, wenn Sie 'null = True' einstellen, wahrscheinlich auch' blank = True' setzen möchten. Andernfalls erhalten Sie beim Reinigen von Modellformularen Fehler. –

Antwort

3

Ich glaube nicht, Einstellung null=True auf dem inneren Typ gibt Ihnen einen Vorteil. Die Anmerkung in den Dokumenten, auf die Sie sich beziehen, gilt nur für die Spalte selbst. Solange ArrayField null ist, muss die Datenbank keine vollständige Neuschreibung der Tabelle durchführen.

Wenn Sie zulassen, dass der innere Typ null ist, müssen Sie in Ihrem Code damit umgehen, was möglicherweise nicht genau Ihren Vorstellungen entspricht.

Verwandte Themen