Django migrations.RenameField создает новое поле вместо переименования существующего
Я отредактировал свежий файл миграции, чтобы вместо добавления нового поля просто переименовать поле, которое уже существует в Django Model
Это было единственное изменение на этом поле
migrations.RenameField(
model_name='my_field',
old_name='field_old_name',
new_name='field_new_name',
),
Но после выполнения manage.py migrate
я заметил, что было добавлено новое поле (со значением поля по умолчанию), а старое все еще там
При повторном запуске manage.py makemigrations
создается миграция для удаления старого поля
Что я не могу сделать, потому что потеряю данные
Шаги:
- добавлены новые поля в модель (без удаления старых, чтобы не сломать код)
- manage.py makemigrations
- код изменен для использования нового поля
- файл миграции отредактирован для использования migrations.RenameField
- manage.py migrate
Примечание: Я решил поместить это сюда, потому что проблема была не так очевидна
Проблема заключалась в том, что у меня не было прав на запись в файл миграции после его создания
Так что те редакции, которые я сделал, появились в VS Code, но не были сохранены в файле. Итак, миграции, примененные при запуске manage.py migrate, не имели команды RenameField
Запуск sudo chmod -R 775 <project_folder>
и sudo chown <user> -R <project_folder>
решение