2017-08-20 3 views
-1

Ich habe für eine Weile, um dieses Konzept meinem Kopf wurde Einwickeln, wenn ich ein neues django Projekt starten, drängt es mich Migrationen anwenden:Was ist Djangos Migration?

# python manage.py runserver 
Performing system checks... 

System check identified no issues (0 silenced). 

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 
Run 'python manage.py migrate' to apply them. 

warum ich es tun müssen? Könnte jemand eine kurze Erklärung und einen einfachen Anwendungsfall von migration geben?

EDIT: Ich habe beschlossen, diese Frage zu veröffentlichen, weil ich keine ähnliche Frage hier auf Stackoverflow sah, vielleicht gibt es eine bessere Erklärung als im Dokument.

+1

https://docs.djangoproject.com/en/dev/topics/migrations/ Hinzufügen/Entfernen von Tabellen/Spalten usw. –

Antwort

1

Migrationen sind eine hervorragende Möglichkeit, Datenbankschemaänderungen zu verwalten. Dies hat 2 Hauptvorteile (meiner Meinung nach):

1 - Wenn Sie mehrere Instanzen einer Anwendung haben - Entwicklung + Produktion ist das typische Minimum, könnte aber möglicherweise eine Anwendung von anderen installiert werden (entweder eigenständig oder zusammen mit anderen Django-Anwendungen) ermöglichen Migrationen es Ihnen, dem Entwickler, Änderungen des Datenbankschemas in einer sicheren & kontrollierten Weise zu propagieren. Sie können garantieren, dass jeder aktuellen Version Ihrer Anwendung (d. H. Einschließlich Ihrer neuesten Datenbankmodelle) eine funktionierende Datenbank zugeordnet ist. Die allgemeine Antwort lautet also, dass Migrationen ein sehr häufiges Problem auf relativ elegante Weise lösen.

2 - Insbesondere, wie in einer anderen Antwort erwähnt, gibt es anfängliche Migrationen, sogar für ein absolut brandneues Django-Projekt, das sich auf Benutzer und Berechtigungen bezieht. Jede Django-Anwendung von beliebiger Bedeutung, die ich mir vorstellen kann, benötigt diese Tabellen, um funktionieren zu können - d. H., Wenn Sie sie nicht nutzen, dann profitieren Sie wohl nicht viel von dem, was Django als Rahmen bietet. Durch die Einbeziehung von Migrationen können Sie als Entwickler entscheiden, welche Datenbank verwendet werden soll (SQLite, MySQL, PostgreSQL usw.) und wo sich diese Datenbank befindet. Sobald Sie diese Einstellungen vorgenommen haben (normalerweise in settings.py für das Projekt), werden die Migrationen ausgeführt Sorge für den Rest.

1

Diese Migrationen sind für die Modelle, die Django standardmäßig erstellt, wie die Benutzer, Gruppen und Berechtigungen.

Wenn Sie sie nicht verwenden, können Sie diese Apps in Ihren Einstellungen auskommentieren. Andernfalls müssen Sie diese Migrationen ausführen, um die erforderlichen Tabellen für Ihre Anwendung zu erstellen.

+0

Ich meine, warum kann Django dies nicht automatisch tun, um den Benutzer weniger Sorgen zu machen ? oder machen sie das, weil der Modellname nicht vorher bestimmt werden kann? – Sajuuk

+0

Was ist, wenn Sie diese Modelle ändern möchten? Es kann nicht automatisch behandelt werden, ohne Flexibilität zu verlieren. –

+0

Denken Sie daran, Django ist ein Framework, kein CMS. Wenn Sie diesen Details nicht ausgesetzt sein wollen, ist Django nicht die richtige Lösung. –

Verwandte Themen