添加模型依赖项后删除应用引用

Remove app reference after model dependencies were added

我有一个使用外部应用程序引用的 Django 应用程序。我们不再需要这个应用程序引用,所以我们想删除依赖项。我能够生成迁移以删除我们要删除的应用程序中模型的外键,但我无法删除应用程序中的需求引用,因为它在早期的迁移中被引用。

有没有人有已知的解决方案来删除这样的应用程序要求?

举个例子,假设我有一个具有以下模型的外部应用程序:

class ExternalInfo(models.Model):
    random_field = CharField()

并且在您的项目申请中,您有一个客户记录:

class Customer(models.Model):
    name = CharField()
    external_info = ForegnKey(external_app.ExternalInfo, null=True)

应用程序的迁移 0001 在外部应用程序中创建模型的外键。 10 个月过去了,10 次迁移之后,您需要从客户模型中删除 external_info,并且您想从项目中删除 external_app。如何在不破坏旧迁移的情况下删除此依赖项?

好的,我的解决方法是按顺序执行以下步骤:

  1. 生成将从客户模型中删除 external_info 列的迁移脚本
  2. 删除了所有引用该字段的代码
  3. 修改了 0001 迁移以创建外键字段到 0001 迁移之前存在的不同模型
  4. 从 pip 要求中删除了应用程序并安装了应用程序

按照这些步骤升级现有数据库和从头开始构建都会产生相同的数据库架构。 (不包括我现在需要找到一种方法来摆脱应用程序创建的表格,有人对最佳方法有想法吗?我正在考虑写一个 migrations.RunSql 来删除表格,但它们不会存在在新创建的数据库中)