Я нещодавно оновив свою модель, додав до неї 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 .