Выбор ответа Middle Миграции обновлено

Конфликт миграций после слияния веток

Вопрос

После слияния двух веток в приложении оказались 0008_add_status и 0008_add_comment, обе зависят от 0007. Что делать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: makemigrations --merge: создать миграцию-слияние, зависящую от обеих. Django видит два листа в графе миграций и отказывается мигрировать.

Варианты ответа

  1. Удалить одну из миграций и её изменения
  2. makemigrations --merge: создать миграцию-слияние, зависящую от обеихправильный ответ
  3. Переименовать файлы вручную в 0008 и 0009 без изменения зависимостей
  4. Применить migrate --fake для обеих

Разбор

Django видит два листа в графе миграций и отказывается мигрировать. Миграция-слияние объединяет их, если операции не конфликтуют. Если обе ещё не ушли дальше локальной ветки, можно и пересоздать одну поверх другой. Переименование файлов без правки dependencies ничего не меняет, а --fake пометит миграции применёнными без изменения схемы, и база разойдётся с кодом.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.