4

Como pasar de south a migraciones de Django 1.7

Si estas actualizado en el tema de Django, seguro ya sabrás que una de las características más importantes de esta nueva actualización es la implementación de un sistema propio de migraciones dentro del framework, y tambien sabras que el paquete “south” fue por mucho tiempo la solución por excelencia para resolver este problema dentro de Django; pero, ahora que el propio Django ya nos permite resolver este problema, es hora de actualizar de south al sistema de migraciones de Django, y para hacerlo es realmente muy fácil.

En el sitio de la documentación oficial de south encontramos una referencia al hecho de que el propio creador de south nos llama a comenzar a utilizar las Django migrations, debido a que, según sus palabras, las migraciones de Django son mucho más estables que south ya que el framework fue modificado para trabajar mejor con un sistemas de migraciones, compatibilidad a un nivel con el que la librería south no contaba.

Claro que si nuestro proyecto tiene algún tiempo de haber sido iniciado, muy probablemente estaremos usando south en él para manejar las migraciones, si este es el caso, comenzar a usar migraciones de Django es sumamente fácil, en primera tenemos que renombrar las carpetas “migrations” que nos generó south a “south_migrations”, si tenemos la versión más actualizada de south, arriba de la 1.0, ese es el directorio que ahora buscará south para leer sus migraciones, ya que la carpeta “migrations” como tal, es la que utiliza Django migrations.

Para iniciar las migraciones de Django, debemos hacerlo sobre cada aplicación de nuestro proyecto, algo parecido a esto:

python manage.py makemigrations app_name

El comando makemigrations crea una nueva carpeta “migrations” dentro del directorio de tu aplicación con el primer archivo de migración que administra ese módulo.

Ya que tenemos hechas todas las nuevas migraciones con makemigrations, solo queda correrlas, esto se hace con:

python manage.py migrate

Esto intenta crear las tablas especificadas en la migración, osea todos nuestros modelos tal cual están ahora, pero si las tablas ya existen, simplemente las marcará como “fake” y contarán como migración ejecutada, evitando conflictos de forma simple. Si lo deseas, tu también puedes marcar una migración como fake usando el comando:

python manage.py migrate --fake app_name

Si queremos crear una nueva migración para los cambios recientes en un modelo de cierta app, basta con correr nuevamente “makemigrations app_name” seguido de un “migrate” para sincronizar con el servidor de base de datos.

Como pueden ver, la actualización de south a migraciones de Django es sumamente facil, sin hacer muchas modificaciones significativas. Como siempre te dejo el link la documentación oficial, la cual sin duda, te podria ayudar mas a entender los detalles tras este nuevo sistema de migraciones de Django 1.7.

Jesus Anaya - Programador de python y django con un gusto obsesivo por las series de television.

Comentarios

  1. avatar
    luis dijo

    hola tengo un problema al momento de migrar me dice "No changes detected in app 'tracks'" ah que se debe?

  2. avatar
    Jesus Anaya dijo

    Tienes la aplicación agregada a la lista de aplicaciones en el settings.py ?

  3. avatar
    Jesus Anaya dijo

    O dime que cambios hiciste en el Modelo ? agregaste un campo? cambiaste el nombre de uno? que fue?

  4. avatar
    roy dijo

    hola amigo tengo un problema al migrar ya que me dice que el comando es desconocido que me puedes recomendar para solucionarlo

Pública un comentario