Django中的交叉导入
举个例子,我有两个应用程序: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导入内容就不需要了。