如何删除Django应用程序,它是其他应用程序迁移的一部分?

2024-05-17 06:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

  • 在Django1.11项目中有许多应用程序,其中一个应用程序obsolete_app已经过时,需要完全删除
  • 它有一个字段ObsoleteField,用于app bar的模型。因此,该字段在迁移文件中引用
  • ObsoleteField是具有to=myproject.obsolete_app.models.ObsoleteModel的ManyToManyField的子类
  • 这些迁移已经在生产服务器上运行

我绕了一圈,但找不到一个命令使manage.py migrate通过:

  • 添加从app bar模型中删除ObsoleteField的迁移
  • 删除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总是抱怨一些事情


Tags: 文件djangopy模型app应用程序manageis