Django - Урок 046. Сброс миграций в проекте

Django, Model, Reset

В процессе разработки проекта на Django мы можем столкнуться с неприятной ситуацией, когда какие-то пакеты и модули были удалены и соответственно перестали использоваться модели из данных пакетов. Но при этом squash миграций приложений не позволяет удалить эти пакеты, поскольку миграции имеют много циклических зависимостей. В следствие чего удалить ненужные пакеты становится довольно тяжёлой задачей. Поскольку разрешение подобных зависимостей становится нетривиальной задачей. Для меня таким неприятным пакетом стал Django CKEditor, который присутствовал практически везде. В итоге данный пакет из-за миграций оставался довольно долго в списке requirements.txt, хотя по факту не использовался на сайте вовсе.

Для того, чтобы избавиться от подобных зависимостей миграций нужно удалить все миграции, при этом не удаляя контент, который был создан данными миграциями. А потом создать новую initial миграцию и применить её к базе данных также без внесения новых изменений в структуру базы данных.

Как это сделать?

  1. Вернуть все миграции к нулевому состоянию с параметром fake. Это означает, что информация о миграциях будет удалена, но при этом контент изменяться не будет

    python manage.py migrate app zero --fake

  2. Удалить файлы миграции из репозитория

    git rm "app/migrations/*"

  3. Создать новый файл миграции

    python manage.py makemigrations app

  4. Запустить новую миграцию с параметром fake, чтобы добавить информацию о миграции в базу данных, но при этом не изменять структуру базы данных

    python manage.py migrate app --fake

Заключение

Осторожно применяйте подобный подход к корректировке миграций и лучше создайте новую миграцию на тестовом сервере, чтобы убедиться, что всё делаете правильно и база данных не пострадает.

При этом на тестовом сервере можно создать новую миграцию и добавить её в git репозиторий.

После чего на боевом сервере нужно будет сделать следующие действия.

python manage.py migrate app zero --fake
git pull
python manage.py migrate app --fake

Для Django рекомендую VDS-сервера хостера Timeweb .

Возврат 10% от суммы заказа отеля на Booking
Возврат 10% от суммы заказа отеля на Booking
Предлагаем ссылку с 10% возвратом от суммы заказа при бронировании отеля через Booking
Поддержать автора Donate

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
АС
22 июля 2019 г. 16:32
Александр Спиридонов

C++ - Тест 001. Первая программа и типы данных

  • Результат:46баллов,
  • Очки рейтинга-6
АС
22 июля 2019 г. 16:21
Александр Спиридонов

Qt - Тест 001. Сигналы и слоты

  • Результат:73баллов,
  • Очки рейтинга1
22 июля 2019 г. 10:00
Pavel K.

C++ - Тест 006. Перечисления

  • Результат:50баллов,
  • Очки рейтинга-4
Последние комментарии
21 июля 2019 г. 6:03
Евгений Легоцкой

да, наверное, 32-х разрядную поддержку уже давно поа было выкинуть. К слову, у вас много проектов под Android? Часто много где вижу вопросы о том, пишет ли кто-то вообще на Qt под мобильные сист…
20 июля 2019 г. 14:41
Андрей Янкович

Очень полезная информация, увы уже выкинул поддержку 32 битных бедняг.
20 июля 2019 г. 9:31
Михаиллл

Вот так qDebug()<<"position:"<<event->scenePos();
20 июля 2019 г. 8:49
Михаиллл

Добрый день. Как можно узнать координату на графической сцене при отпускании клавиши мыши?
Сейчас обсуждают на форуме
22 июля 2019 г. 10:50
Pavel K.

Благодарю.Буду пробовать.
22 июля 2019 г. 10:10
Pavel K.

Скорее всего в коде не правильно потоки используются. на форуме пишут кое что интересное - https://stackoverflow.com/questions/18112027/qt-5-1-qml-property-through-threads
22 июля 2019 г. 3:58
Евгений Легоцкой

Добрый день! Нужен совет сообщества по разработке функционала проверки орфографии. Одна из идей - добавить проверку орфографии при наборе текста статей. Полагаю, что наиболее аде…
22 июля 2019 г. 3:01
Евгений Легоцкой

Возможно, если при сохранении файла установить права доступа на файл. Что-то такое должно быть у QFile
Ищу работу?
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB