2016-10-19 2 views
1

Ich arbeite seit einiger Zeit an einer Django-App und habe einen Bedarf an dynamischer Modell- und Datenbanktabellengenerierung festgestellt. Ich habe weit und breit gesucht und es scheint, als ob die Django API diese Funktion nicht enthält. Von dem, was ich gesammelt habe, hat South eine Funktion, dies zu tun (d. H. South.db.create_table). Nach den Southern Release Notes ist South jedoch nicht kompatibel mit Django 1.7 und höher und mein Projekt wurde mit Django 1.9 erstellt.Django: Erstellen von Datenbanktabellen programmgesteuert/dynamisch

ich bereits ein Skript geschrieben haben, die Modellinstanzen des Schemas erstellt möchte ich meine Datenbank mit dem folgenden Verfahren migrieren:

attrs = {'__module__':model_location, 'Meta':Meta} 
model = type(table_name, (models.Model,), attrs) 

P. S. Bitte beachten Sie, dass dies nicht das gesamte erwähnte Skript ist. Wenn Sie denken, dass dies für mich nützlich wäre, kann ich es auf Anfrage hinzufügen.

Hat jemand einen Workaround für die Verwendung von South 1.0.2 mit Django 1.9 gefunden? Wenn nicht, hat jemand irgendwelche Ideen, wie ich diese Funktionalität ohne Süden erreichen könnte? Ich habe versucht, über alternative Methoden nachzudenken (anstatt Tabellen dynamisch zu generieren), aber das scheint wirklich, als würde es die prägnantesten und saubersten Ergebnisse geben, wenn man den Umfang meines Projekts betrachtet.

Vielen Dank!

Antwort

2

Der Grund, warum South mit den letzten Django-Versionen nicht kompatibel ist, ist, dass es seit Django 1.7 unter dem Namen "migrations" rolled into Django ist. Wenn Sie nach ähnlichen Funktionen suchen, wäre der Ausgangspunkt die documentation on migrations. Insbesondere können Sie sich für den Abschnitt RunSQL interessieren. Wenn Sie das Migrationsmodul meiden möchten, können Sie auch perform raw SQL queries.

+0

Danke für die schnelle Antwort! Ich schaue auf beide. Ich hatte jedoch gehofft, aus Sicherheitsgründen rohe SQL-Abfragen zu vermeiden. –

Verwandte Themen