Página oficial del módulo:
http://south.aeracode.org/
Para instalar el módulo, yo lo he hecho, a través de easy_install.
Si no tienes instalado la herramienta de instalción, se instala con:
sudo apt-get install python-setuptools
y para instalar el módulo de south:
sudo easy_install South
Este mini tutorial, está basado en el tutorial oficial que se puede encontrar en la página de South. Es muy importante seguir el orden en que se sincroniza la base de datos. Si no se hace en el orden correcto, pueden aparecer errores.
http://south.aeracode.org/docs/tutorial/index.html
Creamos un proyecto nuevo:
django-admin startproject demosouth
Ahora, hay que configurar la base de datos que va a usar django. Yo he usado sqlite, ya que para estos ejemplos sencillos, me parece la opción más simple. (Ver como hacerlo aquí). También incluimos la applicacion 'south' en INSTALLED_APPS. He comentado el resto de aplicaciones que vienen por defecto.
A continuación se sincroniza la base de datos.
./manage.py syncdb
Ahorar creamos una aplicación sobre la que trabajar.
./manage.py startapp southtut
Editamos el fichero southtut/models.py y añadimos la siguiente clase:
class Knight(models.Model):
name = models.CharField(max_length=100)
of_the_round_table = models.BooleanField()
Añadimos la aplicación southtut a INSTALLES_APPS. Ahora no sincronizamos la base de datos, en vez de eso, creamos una migración,
./manage.py schemamigration southtut –-initial
y la aplicamos.
./manage.py migrate southtut
Al aplicar la migración, se ha generado la tabla correspondiente.
Para ver como no afecta los cambios en modelos de django en la la información introducida con anterioridad, es necesario que las tablas de la base de datos contengan información. Se puede hacer mediante "./manage.py shell" o directamente en la base de datos. Al haber usado sqlite, se puede usar la herramienta sqlitemanager para introducir datos en la tabla.
A continuación se va a modificar el modelo. El principal objetivo de este tutorial, es aprender a modificar un modelo de django y que los datos que estaban almacenados con anterioridad, no se pierdan. Editamos southtut/models.py.
class Knight(models.Model):
name = models.CharField(max_length=100)
of_the_round_table = models.BooleanField()
dances_whenever_able = models.BooleanField()
Ahora creamos una migración nueva. Esta migración contiene las modificaciones que se han hecho en los modelos, pero todavía no se han visto reflejadas en las tablas de la base de datos.
./manage.py schemamigration southtut –-auto
y la aplicamos
./manage.py migrate southtut
Al aplicar la migración, la tabla referente al modelo que se ha cambiado reflejará dichos cambios. Si ahora comprobamos los valores de la base de datos, mediante sqlitemanager en nuestro ejemplo, vemos que se mantienen los datos que hemos introducido anteriormente, pero se ha añadido una nueva columna a la tabla.
he añadido un nuevo post relacionado con este:
ResponderEliminarhttp://pablogplanet.blogspot.com/2010/07/nota-anadiendo-south-un-projecto.html