Wobei in der FAQ von Django Evolution steht:
Django Evolution is known to work well for PostgreSQL and SQLite. This is because the core developers both use PostgreSQL and SQLite on a daily basis. Support for MySQL is less complete.
Ich folgere daraus, das man mit SQLite einiges machen kann. Auf der anderen Seite steht bei den
SQLite Docs das:
SQLite's version of the ALTER TABLE command allows the user to rename or add a new column to an existing table. It is not possible to remove a column from a table.
Der letzte Satz ist schon sehr einschränkend...
Ich habe immer noch eine Idee im Hinterkopf, um bei einem django Projekt die Modelle nach und nach weiterentwickeln zu können:
Wenn ich ein Modell arg ändere, dann erstelle ich eine komplett neues Model und behalte das alte erstmal bei. Somit kann ich über das ORM die Daten von dem alten Modell in das neue Model transferieren und dabei Änderungen einfließen lassen. Ist das Updaten gelaufen, kann ich mit DROP TABLE die alte Tabelle löschen. In der neusten Version des Programms, lösche ich dann auch die alte Model Klasse.
Theoretisch kann man so bei jedem Versionswechsel seine Modell umbauen und über eine Update Funktion migriert man die Daten.
Damit die Tabellen zum Model passen, könnte man mit
db_table den Namen selber setzten. So könnte man die alte Model Klasse umbenennen und "_old" dran hängen, aber mit db_table auf die alte Tabelle verweisen. Die neue Model Klasse heißt dann so wie die alte, aber db_table bekommt dann z.B. eine Fortlaufende Nummer...
Naja, ich weiß nicht, ob das in der Praxis so funktioniert. Ist halt nur so eine Idee. Aber ich sollte mir mal die beiden migrations Tools von oben näher ansehen...