Django Syncdb и обновленная модель - PullRequest
85 голосов
/ 22 октября 2009

Я недавно обновил свою модель, добавил к ней BooleanField, однако, когда я делаю python manage.py syncdb, он не добавляет новое поле в базу данных для модели. Как я могу это исправить?

Ответы [ 7 ]

100 голосов
/ 22 октября 2009

С Django 1.7 и далее

Django имеет встроенную поддержку миграции - посмотрите документацию .

Для Django 1.6 и более ранних версий

Django не поддерживает миграции из коробки. Для Django есть подключаемое приложение, которое делает именно это, и прекрасно работает. Это называется Юг .

14 голосов
/ 22 октября 2009

Джанго в настоящее время не делает этого автоматически. Ваши варианты:

  1. Удалить таблицу из базы данных, а затем заново создать ее в новой форме с помощью syncdb.
  2. Распечатайте SQL для базы данных, используя python manage.py sql (appname), найдите добавленную строку для поля и добавьте ее вручную, используя команду alter table SQL. (Это также позволит вам выбрать значения поля для ваших текущих записей.)
  3. Использование Юг (за ответ Доминика ).
11 голосов
/ 22 октября 2009

Выполните следующие действия:

  1. Экспорт данных в прибор с помощью команды управления dumpdata
  2. Оставь стол
  3. Запустить syncdb
  4. Перезагрузите данные из прибора с помощью loaddata команда управления
8 голосов
/ 25 мая 2011

Как указано в верхнем ответе, я попытался использовать Юг , и после часа разочарования в связи с неясными ошибками миграции решил вместо этого использовать Django Evolution .

Я думаю, что с ним легче начать, чем с Саутом, и он отлично сработал, когда я в первый раз набрал ./manage.py evolve --hint --execute, поэтому я доволен.

2 голосов
/ 22 октября 2009

Некоторое время не использовал django, но я помню, что syncdb выполняет команды alter для таблиц db. Вы должны отбросить таблицу, затем снова запустить, и она будет создана снова.

edit: извините, НЕ выполняет изменения.

1 голос
/ 13 мая 2016

В Джанго 1.6

  • Сначала мы запустили - python manage.py sql <app name>

  • Тогда мы должны бежать - python manage.py syncdb

0 голосов
/ 26 декабря 2014

Если вы запускаете Django с Apache и MySQL, перезапустите apache после выполнения миграции с makemigrations .

...