Я недавно обновил свою модель, добавил к ней BooleanField, но когда я это сделаю python manage.py syncdb
, он не добавит новое поле в базу данных для модели. Как я могу это исправить ?
Я недавно обновил свою модель, добавил к ней BooleanField, но когда я это сделаю python manage.py syncdb
, он не добавит новое поле в базу данных для модели. Как я могу это исправить ?
Ответы:
Django имеет встроенную поддержку миграции - ознакомьтесь с документацией .
Django не поддерживает миграции из коробки. Однако есть подключаемое приложение для Django, которое делает именно это, и оно отлично работает. Это называется Юг .
В настоящее время Django не делает этого автоматически. Ваши варианты:
python manage.py sql (appname)
, найдите добавленную строку для поля и добавьте ее вручную с помощью alter table
команды SQL. (Это также позволит вам выбрать значения поля для ваших текущих записей.)Как было предложено в верхнем ответе, я попытался использовать South , и после часа разочарования из-за неясных ошибок миграции решил вместо этого использовать Django Evolution .
Я думаю, что с ним легче начать, чем с Югом, и он отлично работал, когда я впервые печатал ./manage.py evolve --hint --execute
, так что я доволен.
Давно не использовал django, но, кажется, помню, что syncdb действительно выполняет команды alter в таблицах db. вам нужно отбросить таблицу, затем запустить ее снова, и она снова будет создана.
изменить: извините, НЕ выполняет изменения.
alter table
команды, это выполняемые create table
команды.
В django 1.6
Сначала мы побежали - python manage.py sql <app name>
Тогда мы должны бежать - python manage.py syncdb
Если вы запускаете Django с Apache и MySQL, перезапустите apache после выполнения миграции с помощью makemigrations .