Recientemente actualicé mi modelo, le agregué un BooleanField; sin embargo, cuando lo hago python manage.py syncdb
, no agrega el nuevo campo a la base de datos del modelo. Cómo puedo arreglar esto ?
Recientemente actualicé mi modelo, le agregué un BooleanField; sin embargo, cuando lo hago python manage.py syncdb
, no agrega el nuevo campo a la base de datos del modelo. Cómo puedo arreglar esto ?
Respuestas:
Django ha incorporado soporte para migraciones; echa un vistazo a la documentación .
Django no admite migraciones listas para usar. Sin embargo, hay una aplicación conectable para Django que hace exactamente eso y funciona muy bien. Se llama Sur .
Actualmente, Django no hace esto automáticamente. Tus opciones son:
python manage.py sql (appname)
, busque la línea agregada para el campo y agréguela manualmente usando el alter table
comando SQL. (Esto también le permitirá elegir valores del campo para sus registros actuales).Sigue estos pasos:
Como se sugiere en la respuesta principal, intenté usar South , y después de una hora de frustración con errores de migración oscuros, decidí ir con Django Evolution .
Creo que es más fácil comenzar con South, y funcionó perfectamente la primera vez que escribí ./manage.py evolve --hint --execute
, así que estoy contento con eso.
No he usado django por un tiempo, pero creo recordar que syncdb realiza comandos alter en tablas db. tienes que soltar la tabla y luego ejecutar nuevamente y se creará nuevamente.
editar: lo siento NO realiza alteración.
alter table
comandos, está ejecutando create table
comandos.
En django 1.6
Al principio hemos corrido - python manage.py sql <app name>
Entonces tenemos que correr - python manage.py syncdb
Si ejecuta Django con Apache y MySQL, reinicie Apache después de realizar la migración con makemigrations .