runserver - python manage.py syncdb
django syncdb y un modelo actualizado (7)
De Django 1.7 en adelante
Django ha incorporado soporte para migraciones: eche un vistazo a la documentación .
Para Django 1.6 y versiones anteriores
Django no admite migraciones listas para usar. Hay una aplicación enchufable para Django que hace exactamente eso, y funciona muy bien. Se llama South .
Recientemente he actualizado mi modelo y le he agregado 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 ?
Como se sugirió en la respuesta principal, traté de usar South , y después de una hora de frustración con oscuros errores de migración decidí optar por Django Evolution .
Creo que es más fácil comenzar con South, y funcionó perfectamente la primera vez que ./manage.py evolve --hint --execute
, así que estoy contento con eso.
Django actualmente no hace esto automáticamente. Tus opciones son:
- Suelta la tabla de la base de datos, luego recípala en forma nueva usando syncdb.
- 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 comandoalter table
SQL. (Esto también le permitirá elegir valores del campo para sus registros actuales). - Usa el South (según la respuesta de Dominic ).
En django 1.6
Al principio hemos ejecutado -
python manage.py sql <app name>
Entonces tenemos que ejecutar -
python manage.py syncdb
Havent usó django en un momento, pero parece recordar que syncdb realiza los comandos alter en las tablas db. tienes que soltar la tabla y luego volver a ejecutar y creará de nuevo.
editar: lo siento NO se realiza alterar.
Si ejecuta Django con Apache y MySQL, reinicie apache después de realizar la migración con makemigrations .