Как удалить приложение django, которое является частью миграции другого приложения? - PullRequest
0 голосов
/ 16 мая 2019
  • В проекте 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 всегда на что-то жалуется.

...