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> решение

Вернуться на верх