关于 Django 的循环导入,他们有什么办法可以myModel = apps.get_model('app_name', 'model_name')在 models.py 文件中抓取模型对象吗?
我知道我可以使用 models.ForeignKey('app.model',....)
但就我而言,我正在 models.py 中查询自定义函数。所以我需要抓取模型对象。也不能以正常方式导入它,因为已经在另一个文件中导入了这个文件类。所以一定是循环导入。
这段代码myModel = apps.get_model('app_name', 'model_name')在 views.py 上运行良好,但在 models.py 中不行。由于根据 django 所有 models.py 在 settings.py 之后被调用,然后在视图和其他之后调用。所以在尝试使用get_model内部 models.py 时出现此错误
文件“/home/mypc/.virtualenvs/VSkillza/lib/python3.6/site-packages/django/apps/registry.py”,第132行,在check_models_ready raise AppRegistryNotReady(“模型尚未加载。”) django .core.exceptions.AppRegistryNotReady:模型尚未加载。
提前致谢 :)
您可以通过在自定义函数内移动导入来打破循环导入。这样,模型在函数运行时加载,而不是在模块加载时加载。
def my_function():
from myapp.models import MyModel
Run Code Online (Sandbox Code Playgroud)
循环导入表明您的代码结构不正确,但我们无法为您提供任何建议,因为您尚未显示它。