Как сделать миграции после добавления поля?
Всем привет, добавил новые поля в модель, пытаюсь смигрировать их, выскакивает ошибка
django.db.utils.ProgrammingError: column "name" of relation "employees_employee" already exists
Пытался делать фейковую миграцию предпоследней миграции
python src/manage.py migrate --fake employees 0009_rename_socialaccount_socialnetwork
После этого делал обычную и получаю такую же ошибку что поле уже существует. Удалять все миграции не вариант. Подскажите как можно это решить?
Ответы (1 шт):
Скорее всего есть какая то не согласованность таблиц в БД и миграций Djnago. Django пытается создать поле, которое уже существует. Поэтому при создании миграции с новым полем нужно будет заменить (в файле новой миграции) AddField -> AlterField. Хочу предупредить, что несогласованность БД и миграцией в будущем может сильно мешать. Теоретически правильным решением будет, создать миграцию (makemigrations), которая создаст это поле, затем выполнить migrate --fake, затем создать ещё одну пустую миграцию, скопировать в неё код предыдущей миграции (с поправкой на dependenses, чтобы она ссылалась на прошлую миграцию) и заменить AddField -> AlterField.