Пока что не до конца понимаю что такое миграции, воспринимаю их как создание таблиц и связывания их с моделями)
когда делаешь makemigrations происходит сканирование предыдущих миграций и текущих моделей, создаются sql запросы, которые можно посмотреть командой sqlmigrate
а migrate пуляет всё это в базу
проблемы начинаются, когда состояние базы и моделей расходятся, у меня в процессе разработки такое по 7 раз на дню, иногда фейкаю, иногда базу вручную к нужному состоянию привожу