Evgenii Legotckoi
28 квітня 2019 р. 19:36

Django - Підручник 046. Скидання міграції в проекті

У процесі розробки проекту на Django ми можемо зіткнутися з неприємною ситуацією, коли деякі пакети та модулі були видалені і, відповідно, моделі цих пакетів більше не використовувалися. Але в той же час сквош міграцій додатків не дозволяє видалити ці пакети, оскільки міграції мають багато циклічних залежностей. В результаті, видалення непотрібних пакетів стає досить складним завданням. Оскільки дозвіл таких залежностей стає нетривіальним завданням. Для мене таким неприємним пакетом був Django CKEditor, який був майже скрізь. У результаті цей пакет через міграції досить довго залишався у списку requirements.txt, хоча на сайті взагалі не використовувався.


Щоб позбавитися таких залежностей міграцій, потрібно видалити всі міграції, при цьому не видаляючи контент, створений цими міграціями. А потім створити нову початкову міграцію і застосувати її до бази даних без внесення нових змін до структури бази даних.

Як це зробити?

  1. Повернути всі міграції до нульового стану з параметром fake. Це означає, що інформація про міграцію буде видалена, але вміст не зміниться.
  1. python manage.py мігрувати програму нуль --fake
  1. Видалити файли міграції з репозиторію
  1. git rm "додаток/міграції/*"
  1. Створіть новий файл міграції
  1. Додаток python manage.py makemigrations
  1. Запустіть нову міграцію з параметром fake, щоб додати інформацію про міграцію до бази даних, але не змінювати структуру бази даних.
  1. python manage.py мігрувати програму --fake

Висновок

Уважно застосовуйте цей підхід до налаштування міграцій та краще створіть нову міграцію на тестовому сервері, щоб переконатися, що ви все робите правильно та база даних не зламається.

При цьому на тестовому сервері можна створити нову міграцію та додати її до репозиторію git.

Потім на робочому сервері потрібно буде зробити наступне.

  1. python manage.py migrate app zero --fake
  2. git pull
  3. python manage.py migrate app --fake

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

Рекомендовані статті на цю тему

По статті запитували0питання

1

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
  • Останні коментарі
  • Evgenii Legotckoi
    16 квітня 2025 р. 17:08
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    12 квітня 2025 р. 17:12
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    01 квітня 2025 р. 11:41
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    09 березня 2025 р. 21:02
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    09 березня 2025 р. 16:14
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…