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