2016-11-22 1 views
0

Ich habe eine Datamigration, die ich eigentlich zurückrollen möchte, wenn bestimmte Bedingungen auftreten.Wie kann die Django-Datenmigration abgebrochen werden?

Ich weiß, dass Migrationen automatisch in eine Transaktion eingeschlossen werden, so dass ich sicher bin, nur eine Ausnahme auszulösen, und dann darauf vertrauen, dass alle Änderungen rückgängig gemacht werden. Aber welche Ausnahme sollte ich erheben, um meine Django-Datenmigration abzubrechen? Sollte ich meine eigene Ausnahme schreiben, oder geht es mir gut mit raise Exception('My message explaining the problem')? Was ist die beste Vorgehensweise?

Antwort

1

Eine benutzerdefinierte Ausnahme wird eine etwas hübschere Nachricht geben. Auf der anderen Seite sind Migrationen in der Regel einmalig und enthalten im Wesentlichen keine Code-Abhängigkeiten untereinander oder dem Rest des Projekts. Das bedeutet, dass Sie keine Ausnahmeklassen verwenden können, um sicherzustellen, dass jede Migration einzeln ausgeführt wird. Der einzige Zweck einer Ausnahme hier ist es, sofortiges Feedback zu geben, da es von nichts gefangen wird (außer möglicherweise Fehlerprotokollierung in Produktionsumgebungen ... wo es wirklich nicht scheitern sollte).

Ich denke, die Nachteile überwiegen die Vorteile - heben Sie einfach eine einfache einmalige Exception.

Verwandte Themen