Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django models 添加模型依赖项后删除应用程序引用_Django Models_Django Migrations - Fatal编程技术网

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

Django models 添加模型依赖项后删除应用程序引用,django-models,django-migrations,Django Models,Django Migrations,我有一个django应用程序,它利用了一个外部应用程序引用。我们不再需要此应用程序引用,因此希望删除依赖项。我能够生成迁移以删除我们正在删除的应用程序中模型的外键,但我无法删除应用程序中的需求引用,因为它在早期迁移中被引用 有没有人有已知的解决方案来删除这样的应用程序需求 举个例子,假设我有一个具有以下模型的外部应用程序: class ExternalInfo(models.Model): random_field = CharField() 在项目应用程序中,您有一个客户记录: cl

我有一个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次迁移之后,您需要从客户模型中删除外部应用程序信息,并希望从项目中删除外部应用程序。如何在不中断较旧迁移的情况下删除此依赖关系?

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

  • 生成将从客户模型中删除外部信息列的迁移脚本
  • 已删除引用所述字段的所有代码
  • 修改0001迁移以将外键字段创建为0001迁移之前存在的其他模型
  • 已从pip要求和已安装的应用程序中删除该应用程序

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

    你能解释一下步骤3吗?基本上,我将迁移历史重写为模块中不包含的表,这使我能够成功地删除依赖项