Правильный способ обновить модель в Джанго - PullRequest
1 голос
/ 03 февраля 2012

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

1 Ответ

2 голосов
/ 03 февраля 2012

Описанное вами поведение явно упоминается в документах :

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

Что вам нужно, так это инструмент для миграции баз данных, и - большая проблема, решаемая в основном ; -)

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

...