Mit Django Datenbank Tabellen ändern
…geht leider nicht. Ist ein Datenbank Model einmal definiert, lässt es sich nicht ohne Umwege erweitern. Ruby on Rails ist da schon ein Stück weiter.
Das Problem lässt sich aber mit einem kleinen Trick lösen. Mit Django hat man die Möglichkeit die komplette Datenbank serialisiert zu dumpen und anschliesend wieder zu laden. Die Vorgehensweise ist einfach, einen Dump vom Model bzw. der ganzen Datenbank machen, Model um die gewünschten Felder erweitern, DB Tabellen löschen, Tabellen mit syncdb neu anlegen und den Dump wieder einspielen.
Die komplette Datenbank kann mit
python manage.py dumpdata > mydump.json
gedumpt werden. Einzelne Models mit
python manage.py dumpdata MyModel > mydump.json
Das importieren des Dumps geht wie folgt:
python manage.py loaddata mydump.json
Will man aber z.B. eine Anwendung mit initialen Daten versorgen, dann kann das mit Fixtures gemacht werden. Hierfür ist ein Eintrag in der Settings Datei notwendig.
FIXTURE_DIRS = (
'/absoluter/pfad/zum/fixtures/verzeichnis',
)
Liegt nun in diesem Verzeichnis eine Datei mit der Endung json, dann wird diese automatisch beim syncdb geladen und importiert.
|
2 Kommentare zu “Mit Django Datenbank Tabellen ändern”
Danke wusste ich noch nicht. Mir ist es aber trotzdem lieber die entsprechenden Tabellen durch ein nachträgliches manuelles >>alter table add column … << zu ändern.
Es gibt auch bessere alternativen:
django evolution http://code.google.com/p/django-evolution/
dmigrations http://code.google.com/p/dmigrations/
und django south http://south.aeracode.org/
Kommentar hinzufügen