一尘不染

Django应用依赖周期

django

我正在开发Django应用程序,该应用程序具有非常复杂的模型(它为大学建模-课程,模块,讲座,学生等)。

我将该项目分为多个应用程序,以使整个事情井井有条(应用程序是课程,学校,人员,模块和时间段)。我遇到一个问题,即一个应用程序中的模型可能依赖于另一个应用程序中的模型-因此我必须导入它。然后,第二个应用程序又依赖于第一个应用程序,因此存在一个周期,Python抛出错误。

人们如何处理呢?我知道应用程序应该相对“独立”,但是在这样的系统中,例如,使用ContentTypes将学生链接到模块是没有意义的。

有人有类似的项目可以对此案发表评论吗?


阅读 302

收藏
2020-03-31

共1个答案

一尘不染

如果你的依赖关系是使用外键引用其他应用程序中的模型的,则无需导入其他模型。你可以在ForeignKey定义中使用字符串:

class MyModel(models.Model):
    myfield = models.ForeignKey('myotherapp.MyOtherModel')

这样就无需导入MyOtherModel,因此不需要循环引用。Django在内部解析该字符串,并且一切正常。

2020-03-31