在我的Django应用程序中(我们称之为app
)我有很多文件:views.py
,models.py
我创建了自己的utils.py
。
不幸的是,虽然我可以简单地通过说
将我的模型包含在我的views.py
文件中
from models import *
在我的utils.py
文件中,如果我尝试相同的操作,然后使用模型,我会得到一个异常Global name: MyModel is not defined
。 models.py
确实包含utils.py
,我理解这可能是一个循环的依赖,但它在我添加最近的更改之前一直运行良好。这是原因,如果是重构我的utils文件的唯一解决方案吗?
答案 0 :(得分:1)
嗯,你已经知道这是因为相互依赖。解决这个问题的方法是将util文件拆分为两个,这样就可以通过分离需要调用模型的部分来避免循环导入。
另外,正如Mipadi所建议的那样,您可以简单地在方法范围内进行导入,而不是使用全局导入语句
此外,它实际上取决于您如何使用模型。例如,您可以通过“app_name.class_name”访问模型,但实际上取决于您要使用的上下文。