【问题标题】:How to solve circular imports如何解决循环进口
【发布时间】:2018-08-30 16:02:31
【问题描述】:

我有 2 个模型 ai_output 定义了 AIOutputmanual_overwriteManualOverwrite,它们都在相互导入,所以我收到以下错误:

从 main.models.manual_overwrite 导入 ManualOverwrite

ImportError: 无法导入名称 ManualOverwrite

我可以通过 django 文档找到的唯一解决方案是通过删除其中一个文件中的类的导入来解决它,并将其替换为包含类名称的字符串

所以这个:

aioutput = models.ForeignKey(AIOutput, null=True, blank=True)

变成了这样:

aioutput = models.ForeignKey('ai_output.AIOutput', null=True, blank=True)

但现在我明白了:

main.ManualOverwrite.aioutput: (fields.E300) 字段定义关系 使用模型“ai_output.AIOutput”,该模型要么未安装,要么已安装 摘要。

知道如何解决循环导入的问题吗?任何提示将不胜感激!

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    很可能,您忘记将包含AIOutput 模型的应用添加到INSTALLED_APPS。如果不是这种情况,在INSTALLED_APPS 中将另一个应用程序移到此应用程序之上应该可以解决问题。附带说明一下,当两个相关的东西是不同应用程序的一部分时,通常会发生循环导入,这可能表明设计可能会得到改进,以便相关组件保留在同一个应用程序中。话虽如此,但情况并非总是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 2011-10-19
      • 2015-03-23
      • 2016-09-21
      • 1970-01-01
      相关资源
      最近更新 更多