- В проекте django 1.11 со многими приложениями одно приложение
obsolete_app
устарело и должно быть полностью удалено.
- Имеется поле
ObsoleteField
, которое используется в модели приложения bar
. Поэтому на это поле ссылаются в файлах миграции.
- ObsoleteField является дочерним классом ManyToManyField с
to=myproject.obsolete_app.models.ObsoleteModel
- Эти миграции уже запущены на рабочем сервере
Я иду по кругу, но не могу найти приказ, чтобы manage.py migrate
прошел:
- Добавить миграцию, которая удаляет
ObsoleteField
из модели приложения bar
- Удалить
models.py
+ добавить миграцию для удаления модели ObsoleteModel
- Удалить приложение из
INSTALLED_APPS
- Удалить все файлы из
obsolete_app
- Редактирование старых миграций, которые импортируют удаленные поля / модель
Я вижу эту ошибку:
File "/var/venv-stable/lib/python2.7/site-packages/django/db/migrations/operations/fields.py", line 150, in state_forwards
delay = not old_field.is_relation
AttributeError: 'NoneType' object has no attribute 'is_relation'
Моя идея состояла в том, чтобы заставить django поверить, что приложение никогда не существовало, и, следовательно, удалить весь импорт, все migrations.AlterField
и т. Д., Но manage.py migrate
всегда на что-то жалуется.