Upgrade-Pfad für wiederverwendbare Apps mit South And Django 1.7 Migrationen

8

Oder: Können Benutzer von Django 1.7 weiterhin South benutzen?

Ich bin der Betreuer einer wiederverwendbaren App. Unsere Politik besteht darin, immer die neuesten zwei Versionen von Django zu unterstützen. Wir haben umfangreiche Migrationen nach Süden und wir wollen das neue Migrationssystem Django 1.7 unterstützen.

Was mich verwirrt, ist, wie ich Entwicklern erlauben kann, meine App sowohl mit Django 1.6 (und South) als auch mit Django 1.7 (neue Migrationen) zu verwenden.

Die Django-Dokumentation empfiehlt, nur alle bereits vorhandenen South-Migrationen zu löschen . Aber das ist keine Option, da ich sie für meine Django 1.6 Benutzer aufbewahren muss.

Am nächsten zu einem Upgrade-Pfad, den ich mir vorstellen kann, ist das neue Migrationssystem, bis ich die Unterstützung für Django & lt; 1.7 in meiner App ablege (also wenn Django 1.8 herauskommt). Aber was ist mit dem Namenskonflikt mit dem Migrationsbefehl? Sowohl der Süden als auch das neue System verwenden python manage.py migrate , um Migrationen auszuführen. Also können Django 1.7 Benutzer den Süden nicht mehr benutzen?

    
stefanfoulis 23.03.2014, 21:22
quelle

3 Antworten

7

South 1.0 bietet die Lösung. Es wird zuerst in einem south_migrations/ Ordner und Fallback auf migrations/ aussehen. Wenn also Bibliotheken von Drittanbietern ältere und neuere Djangos unterstützen müssen, verschieben Sie die South-Dateien in south_migration/ und erstellen Sie neue 1.7-Migrationen in migrations/ .

South kann nicht mit Django 1.7 verwendet werden, aber das ist kein Problem für Endbenutzer. Sie verwenden entweder neue Django oder ältere Djangos mit South 1.0. Es wird keinen South 2.0 geben, der neue 1.7-Migrationen zurückportieren würde. Auch @ Ondrejs Antwort ist korrekt, nur wurde sie geschrieben, bevor South 1.0 veröffentlicht wurde, also bestand die Wahrheit damals (vor wenigen Monaten) nur aus Workarounds.

    
JCotton 02.09.2014, 00:33
quelle
2

Es gibt Einstellungen sowohl in Django ( MIGRATION_MODULES ) als auch in Süden ( SOUTH_MIGRATION_MODULES ), mit denen Sie Module mit Migrationen angeben können. Sie haben also 2 Möglichkeiten:

  • setze Django 1.7-Migrationen in einen neuen Ordner und lasse Django 1.7-Benutzer wissen, dass sie MIGRATION_MODULES auf den angegebenen Ordner setzen sollen.
  • Verschieben Sie South-Migrationen in einen neuen Ordner und lassen Sie South-Benutzer wissen, dass eine neue Version Ihrer App rückwärtskompatibel ist, und sie sollten SOUTH_MIGRATION_MODULES auf den angegebenen Ordner setzen, um sie weiterhin verwenden zu können.

Hier ist ein Artikel , der mehr oder weniger dasselbe beschreibt. Plus eine App , die bereits Änderungen vorgenommen hat, um sowohl South als auch Django 1.7 zu unterstützen.

    
Ondrej Slinták 01.05.2014 09:46
quelle
0

Nun, ich denke du hast Glück, wenn du zur Kickstarter Seite Sie sehen seine Finanzierung (£ 17.952) ermöglicht die 7.000 + Aufgaben einschließlich:

  

Ein Backport der Schlüsselfunktionen zu einer neuen Hauptversion von South, um diejenigen auf Django 1.4 und 1.5 zu unterstützen

Wenn du also bereit bist, kannst du deine 1.6 Süd auf mindestens Django-Migrationen umstellen. Ich weiß es ist nicht genau das, wonach du gefragt hast, aber es scheint der einzige Weg zu sein.

    
Alexander Meesters 08.04.2014 08:57
quelle