Zitat aus der Django-Migrationsdokumentation :
Die Migrationsdateien für jede App befinden sich in einem "Migrations" -Verzeichnis innerhalb dieser App und sind so konzipiert, dass sie in ihre Codebasis übernommen und als Teil davon verteilt werden. Sie sollten sie einmal auf Ihrem Entwicklungscomputer erstellen und dann dieselben Migrationen auf den Computern Ihrer Kollegen, Ihren Staging-Computern und schließlich auf Ihren Produktionsmaschinen ausführen.
Wenn Sie diesem Prozess folgen, sollten in den Migrationsdateien keine Zusammenführungskonflikte auftreten.
Beim Zusammenführen von Versionskontrollzweigen kann es dennoch vorkommen, dass mehrere Migrationen auf der Grundlage derselben übergeordneten Migration durchgeführt werden, z. B. wenn bei verschiedenen Entwicklern gleichzeitig eine Migration eingeführt wurde. Eine Möglichkeit, diese Situation zu lösen, besteht darin, eine _merge_migration_ einzuführen. Oft kann dies automatisch mit dem Befehl erfolgen
./manage.py makemigrations --merge
Dadurch wird eine neue Migration eingeführt, die von allen aktuellen Kopfmigrationen abhängt. Dies funktioniert natürlich nur, wenn kein Konflikt zwischen den Kopfmigrationen besteht. In diesem Fall müssen Sie das Problem manuell lösen.
In Anbetracht , dass einige Leute hier vorgeschlagen , dass Sie nicht , sollten Sie Ihre Migrationen auf Versionskontrolle verpflichten, würde Ich mag die Gründe erweitern , warum Sie eigentlich sollte dies tun.
Zunächst benötigen Sie eine Aufzeichnung der auf Ihre Produktionssysteme angewendeten Migrationen. Wenn Sie Änderungen in der Produktion bereitstellen und die Datenbank migrieren möchten, benötigen Sie eine Beschreibung des aktuellen Status. Sie können eine separate Sicherung der auf jede Produktionsdatenbank angewendeten Migrationen erstellen, dies scheint jedoch unnötig umständlich zu sein.
Zweitens enthalten Migrationen häufig benutzerdefinierten, handgeschriebenen Code. Es ist nicht immer möglich, sie automatisch mit zu generieren ./manage.py makemigrations.
Drittens sollten Migrationen in die Codeüberprüfung einbezogen werden. Dies sind bedeutende Änderungen an Ihrem Produktionssystem, und es gibt viele Dinge, die mit ihnen schief gehen können.
Kurz gesagt, wenn Sie sich für Ihre Produktionsdaten interessieren, überprüfen Sie bitte Ihre Migrationen in die Versionskontrolle.
makemigrations some_app, sind nicht nur die Modelle betroffen, die unter der Kontrolle dieses Mitglieds stehen, sondern auch andere verwandte Modelle. Das heißt, die Migrationsdateien (00 * _ *) in anderen Apps werden geändert. Und das verursacht viele Konfliktprobleme beim Pushing zu oder Ziehen von GitHub. Da unser System derzeit nicht produktionsbereit ist, haben wir nur.gitignoredie Migrationsdatei. Wir wissen immer noch nicht, wie wir es lösen sollen, wenn das System in Produktion geht. Hat jemand irgendwelche Lösungen?