我正在开发Django应用程序,该应用程序具有非常复杂的模型(它为大学建模-课程,模块,讲座,学生等)。
我将该项目分为多个应用程序,以使整个事情井井有条(应用程序是课程,学校,人员,模块和时间段)。我遇到一个问题,即一个应用程序中的模型可能依赖于另一个应用程序中的模型-因此我必须导入它。然后,第二个应用程序又依赖于第一个应用程序,因此存在一个周期,Python抛出错误。
人们如何处理呢?我知道应用程序应该相对“独立”,但是在这样的系统中,例如,使用ContentTypes将学生链接到模块是没有意义的。
有人有类似的项目可以对此案发表评论吗?
如果你的依赖关系是使用外键引用其他应用程序中的模型的,则无需导入其他模型。你可以在ForeignKey定义中使用字符串:
class MyModel(models.Model): myfield = models.ForeignKey('myotherapp.MyOtherModel')
这样就无需导入MyOtherModel,因此不需要循环引用。Django在内部解析该字符串,并且一切正常。