Django中的交叉导入

4 投票
1 回答
1261 浏览
提问于 2025-04-15 23:27

举个例子,我有两个应用程序:alpha和beta。在alpha的models.py文件中,我从beta.models导入了一个模型,而在beta的models.py文件中,我又从alpha.models导入了一个模型。

当我运行manage.py validate时,它提示我出现了ImportError: 无法导入名称ModelName。

这个问题该怎么解决呢?

1 个回答

8

我以前遇到过这个问题,就是有两个模型互相引用,也就是用到了一个叫做ForeignKey的字段。处理这个问题其实有个简单的方法,具体可以参考Django的文档

如果你需要在一个还没有定义的模型上创建关系,可以直接用模型的名字,而不是用模型对象本身:

所以在你的beta/models.py文件里,你可以这样写:

class BetaModel(models.Model):
    alpha = models.ForeignKey('alpha.AlphaModel')
    ...

到这个时候,从alpha.models导入内容就不需要了。

撰写回答