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 ?
python
django
django-models
Hellnar
fuente
fuente
Respuestas:
Desde Django 1.7 en adelante
Django ha incorporado soporte para migraciones; echa un vistazo a la documentación .
Para Django 1.6 y versiones anteriores
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 .
fuente
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 elalter table
comando SQL. (Esto también le permitirá elegir valores del campo para sus registros actuales).fuente
Sigue estos pasos:
fuente
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.fuente
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.
fuente
alter table
comandos, está ejecutandocreate table
comandos.En django 1.6
Al principio hemos corrido -
python manage.py sql <app name>
Entonces tenemos que correr -
python manage.py syncdb
fuente
Si ejecuta Django con Apache y MySQL, reinicie Apache después de realizar la migración con makemigrations .
fuente