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

时间:2016-03-28 18:41:37

标签: django-models django-migrations

我有一个使用外部应用程序参考的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 个答案:

答案 0 :(得分:0)

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

  1. 生成将从客户模型中删除external_info列的迁移脚本
  2. 删除了引用该字段的所有代码
  3. 修改了0001迁移以将外键字段创建为0001迁移之前存在的其他模型
  4. 从点数要求和已安装的应用
  5. 中删除了该应用

    遵循这些步骤,升级现有数据库和从头开始构建都会导致相同的数据库架构。 (不包括我现在需要找到摆脱应用程序创建的表的方法,任何人都有关于最佳方法的想法?我正在考虑编写一个迁移.RunSql删除表,但它们不会存在在新创建的数据库中)