15

Ich habe vonMigrating ManyToManyField auf null wahr, blank wahr, wird nicht erkannt

standard = models.ManyToManyField(Standard) 

zu

standard = models.ManyToManyField(Standard, blank=True, null=True) 

Süd schemamigration für diese App eine Modellwechsel gemacht die Änderung nicht erkennen?

ähnlich wie diese Frage, die unbeantwortet ist: South migrations and changes to many-to-may fields

+0

Was genau sagt South, wenn Sie versuchen, './manage.py schemamigration yourapp - auto 'auszuführen? –

+0

Keine Änderungen gefunden – npradeetw

+0

Ich kann nur daran denken, dass Sie 'models.py' nicht speichern, aber ich bezweifle es sehr. Entschuldigung, ich kann nicht helfen. –

Antwort

28

Das Verhalten korrekt ist: null bedeutet nicht, alles auf Datenbankebene, wenn sie mit einem ManyToManyField verwendet. Der Aufruf eines ManyToManyField verursacht die Erstellung einer Zwischentabelle, die die Beziehung enthält, und obwohl Django ein standard Attribut in Ihrer Modellinstanz für Ihre Bequemlichkeit erstellen wird, gibt es keine tatsächliche Spalte, die es darstellt, das gelöscht werden konnte. Per Definition kann es immer null Instanzen der Beziehung geben.

blank=False wirkt sich jedoch auf die Admin-App aus und zwingt den Benutzer, mindestens eine Beziehung auszuwählen.

(Beachten Sie, dass das integrierte Migrationssystem von Django Migrationen für nahezu jede Änderung an einem Modell erstellt, unabhängig davon, ob es sich auf die Datenbank auswirkt oder nicht. Diese Änderung würde also zu einer Migration führen Datenbank oder ob Sie keine Instanzen der Beziehung haben könnten.)

Verwandte Themen