Ich habe eines meiner Modelle um ein neues Feld erweitert:
%Vor% Da dieses Feld nicht leer sein kann, hat django-admin makemigrations
mich gebeten, einen einmaligen Standard anzugeben, was ich auch getan habe. Hier ist die generierte Migration:
Wie erwartet hat django-admin migrate
einen Fehler geworfen:
Ich dachte, ich könnte die Migration bearbeiten, um eindeutige Werte festzulegen, bevor Sie das Feld eindeutig machen. Also habe ich es versucht:
%Vor% Leider bekomme ich diesen Fehler beim Ausführen von django-admin migrate
:
Ich vermute, dass operations
nicht synchron ausgeführt werden.
Ich denke, ich könnte das Problem beheben, indem ich die Migration in zwei Migrationen aufspalte, aber ich würde gerne wissen, ob ich das in nur einer Migration machen kann. Was ist die übliche Methode zum Erstellen von Migrationen, wenn ein neues eindeutiges Feld in einem Modell hinzugefügt wird?
PS: Ich habe auch versucht, einen F-Ausdruck als Standard ( default=models.F('name') + '@example.fr'
) zu verwenden, aber es ist fehlgeschlagen:
Vielleicht ist es zu spät, aber vielleicht könnte es für jemand anderen funktionieren
Sie können dies in einer Migration mithilfe der migrations.RunSQL -Methode
tunFür Ihren Beispielcode, nachdem Sie Ihrem Modell das neue Feld hinzugefügt und den Befehl python manage.py makemigrations ausgeführt haben (wenn Sie in Ihrem table-Befehl vorhandene Zeilen haben möchten, können Sie den Standardwert auswählen) Wählen Sie "Geben Sie eine einmalige Standard jetzt" -Option und geben Sie einen String-Wert ist es nicht wichtig, weil wir es nicht wirklich verwendet haben) dann gehen Sie zur Migrationsdatei und ändern Operationen Teil mit diesem (Hinweis ich benutze postgresql Sie können SQL für Ihre Datenbank ändern)
%Vor%Führen Sie anschließend den Befehl python manage.py migrate aus das ist es.
Tags und Links django django-migrations