2014-09-04 14 views
6

Ho alcuni progetti con molte migrazioni Sud, incluse quelle che contengono una discreta quantità di SQL personalizzato che deve essere eseguito in un ordine specifico. Dopo l'aggiornamento a Django 1.7, questa è la raccomandazione su come convertire un progetto per utilizzare Sud (dal Django documentation):Qual è il modo consigliato di eseguire le migrazioni di Sud prima delle migrazioni di Django 1.7?

Se si dispone già di migrazioni pre-esistenti create con il Sud, poi il processo di aggiornamento da utilizzare Django .db.migrations è abbastanza semplice:

  • Verificare che tutte le installazioni siano completamente aggiornate con le loro migrazioni.
  • Rimuovere "south" da INSTALLED_APPS.
  • Elimina tutti i file di migrazione (numerati), ma non la directory o __init__.py - assicurati di rimuovere anche i file .pyc.
  • Esegui python manage.py makemigrations. Django dovrebbe vedere le directory di migrazione vuote e fare nuove migrazioni iniziali nel nuovo formato.
  • Eseguire python manage.py migrare. Django vedrà che le tabelle per le migrazioni iniziali esistono già e le contrassegnano come applicate senza eseguirle.

In breve, "pulire le migrazioni esistenti e di Django si prenderà cura di tutto il resto".

Ciò che non è menzionato qui è cosa fare quando le migrazioni Sud esistenti Non solo consistono in modifiche del modello, ma invece contengono SQL diretta, migrazioni di dati, ecc, che devono essere eseguiti in ordine. In questo caso, le migrazioni di Django generate automaticamente mancheranno un sacco di cose, poiché non tutte queste modifiche sono ovvie dall'introspezione di un file di modelli.

Idealmente, si sarebbe in grado di eseguire le migrazioni esistenti utilizzando South, e quindi far migrare le migrazioni di Django. Quale potrebbe essere il modo migliore per farlo? Se questo non è possibile o molto non raccomandato, qual è la migliore alternativa?

+0

Vuoi dire i tuoi migrazioni non può semplicemente essere rottamati dopo sei sicuro che sono stati eseguiti su tutte le installazioni? Li stai usando per fornire una nuova installazione con dati iniziali o qualcos'altro? – Kos

risposta

3

Forse questo post può esserti di aiuto. In sostanza si deve:

  1. Cambia la directory di migrazione corrente 'migrazioni' per aggiornare
  2. 'south_migrations' le impostazioni con questa linea

    SOUTH_MIGRATION_MODULES = { 'your_app': 'your_project.your_app .south_migrations', }

Problemi correlati