После внесения некоторых изменений в мои модели (например, нового поля в модели и новой модели), как лучше всего отразить эти изменения в моей заполненной базе данных?
PS: Я хотел увидеть множество решений в одном рейтинге. Видимо больше решений уже указано здесь.





Зависит от объема изменений. Если это выходит за рамки ALTER, вы делаете серьезную операцию. Сделайте резервные копии модели, а также базы данных, чтобы вы могли вернуться.
Я предпочитаю разместить вашу новую (исправленную, исправленную, расширенную) модель как НОВОЕ приложение. У него не будет URL-адресов или чего-то еще, только модель.
После того, как вы извлекли данные из своей старой модели, вы можете перестроить свою БД в предпочтительном новом формате.
Посмотрите с помощью manage.py sqlall, какие параметры для новых столбцов, и вручную добавьте их в свою базу данных с помощью операторов Alter table. Таким образом, вам не нужно переделывать вашу базу данных; Однако для этого требуются некоторые знания SQL ...
Взгляните на здесь (прокрутите вниз до «Внесение изменений в схему базы данных»)
Я задал аналогичный вопрос здесь и получил довольно много ответов.
Есть довольно много способов сделать это, например, вручную выполнить сброс и перезагрузку с помощью SQL, использовать фикстуры или использовать один из «появляющихся» пакетов эволюции схемы для Django:
Другой метод - использовать аргументы dumpdata и loaddata для manage.py, убивая вашу базу данных между ними:
python manage.py dumpdata > dump.jsonpython manage.py loaddata dump.jsonПодробнее см. manage.py документы.
Хорошее решение. Спасибо. В нашем случае в Django 14 нам нужно создать пустую базу данных перед загрузкой фикстур. БД может быть создана с помощью syncdb, однако автоматически созданные типы контента необходимо удалить вручную перед загрузкой дампа.
Посмотрите на дату этого ответа. Иногда собственная система миграции Django так же хороша или лучше, как South. @Stian Jensen знает правильный ответ.
Perform these steps in order may help you:
For more details,
нажмите здесь: http://south.readthedocs.org/en/latest/
1) python manage.py schemamigration apps.appname --initial
На предыдущем шаге по умолчанию создается папка миграции.
2) python manage.py migrate apps.appname --fake
генерирует поддельную миграцию.
3) python manage.py schemamigration apps.appname --auto
Затем вы можете добавить поля по своему усмотрению и выполнить указанную выше команду.
4) python manage.py migrate apps.appname
Затем перенесите файлы в базу данных.
Django теперь имеет собственные встроенные миграции, документированные по адресу:
python manage.py sqlreset appnameпечатает необходимые операторы SQL, но фактически не запускает их.