django syncdb y un modelo actualizado

Recientemente actualicé mi modelo, le agregué un BooleanField, sin embargo, cuando hago python manage.py syncdb , no agrega el nuevo campo a la base de datos para el modelo. Cómo puedo arreglar esto ?

A partir de Django 1.7.

Django ha incorporado soporte para migraciones, eche un vistazo a la documentación .

Para Django 1.6 y anteriores

Django no admite migraciones fuera de la caja. Hay una aplicación conectable para Django que hace exactamente eso y funciona muy bien. Se llama Sur .

Django actualmente no hace esto automáticamente. Sus opciones son:

  1. Elimine la tabla de la base de datos, luego vuelva a crearla en una nueva forma usando syncdb.
  2. Imprima SQL para la base de datos usando python manage.py sql (appname) , encuentre la línea agregada para el campo y agréguela manualmente usando el comando alter table SQL. (Esto también le permitirá elegir los valores del campo para sus registros actuales).
  3. Usa el sur (según la respuesta de Dominic ).

Sigue estos pasos:

  1. Exporte sus datos a un accesorio utilizando el comando de gestión de volcado de datos
  2. Dejar la mesa
  3. Ejecutar syncdb
  4. Vuelva a cargar sus datos desde el dispositivo utilizando el comando de administración de datos de carga .

Como se sugirió en la respuesta principal, intenté usar South , y después de una hora de frustración con los errores de migración oscuros , decidí usar Django Evolution en su lugar.

Creo que es más fácil comenzar que con South, y funcionó perfectamente la primera vez que ./manage.py evolve --hint --execute , así que estoy contento con eso.

He usado django por un tiempo, pero me parece recordar que syncdb realiza comandos de alteración en las tablas de db. Tienes que dejar caer la tabla y luego ejecutar de nuevo y se creará de nuevo.

edición: lo siento no realiza alterar.

En django 1.6

  • Al principio hemos ejecutado – python manage.py sql

  • Entonces tenemos que ejecutar – python manage.py syncdb

Si ejecuta Django con Apache y MySQL, reinicie Apache después de realizar la migración con makemigrations .