2012-02-02 5 views
1

Я продолжаю модифицировать свою модель в Django. Однако после этого я должен зайти в базу данных, удалить таблицу вручную, а затем manage.py syncdb. Я попробовал manage.py reset <<app_name>>, но он не упадет, а затем переустановит модель с новыми полями. Каков правильный способ сделать это или это лучший способ войти в базу данных, удалить, а затем syncdb?Правильный способ обновления модели в Django

+1

Возможный дубликат [рабочий процесс Django при частом изменении моделей?] (Http://stackoverflow.com/questions/497654/django-workflow-when-modification-models-frequently) – Marcin

+3

Используйте юг: south.aeracode.org/ – Marcin

+0

@Marcin Спасибо, что я искал – Alexis

ответ

2

поведение вы описываете прямо упоминается в docs:

SyncDB будет только создавать таблицы для моделей, которые еще не были установлены . Он никогда не выдает утверждения ALTER TABLE, чтобы соответствовать изменениям , сделанным для класса модели после установки. Изменения в классах моделей и схемы базы данных часто связаны с некоторой формой двусмысленности, и в этих случаях Django должен был угадать правильные изменения. Существует риск того, что критические данные будут потеряны в процессе.

Что вы после это инструмент для миграции баз данных и is a large problem mostly solved ;-)

Так что да, как сказал Мартин, ваш ищут South. В качестве альтернативы вы можете попробовать Nashvegas и для небольших изменений даже sql_diff, который является частью django-extensions, является жизнеспособным вариантом.

Смежные вопросы