Я недавно обновил свою модель, добавил к ней BooleanField, но когда я это сделаю python manage.py syncdb
, он не добавит новое поле в базу данных для модели. Как я могу это исправить ?
python
django
django-models
Hellnar
источник
источник
Ответы:
Начиная с Django 1.7
Django имеет встроенную поддержку миграции - ознакомьтесь с документацией .
Для Django 1.6 и ранее
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 .
источник