python - Django:在models.py上使用apps.get_model获取模型
问题描述
关于 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 中引发 AppRegistryNotReady(“模型尚未加载。”) django .core.exceptions.AppRegistryNotReady:模型尚未加载。
提前致谢 :)
解决方案
您可以通过在自定义函数中移动导入来中断循环导入。这样,模型在函数运行时加载,而不是在模块加载时加载。
def my_function():
from myapp.models import MyModel
循环导入表明您的代码结构不正确,但由于您没有显示,我们无法给您任何建议。
推荐阅读
- laravel - Laravel-websockets 无法通过 nginx 在 plesk 的 VPS 服务器上运行
- android - Why is my drawable button layout not being applied to the button as a background?
- php - Laravel 8 在所有控制器中使用变量
- mysql - 连接失败:用户拒绝访问 - AWS RDS 中托管的 MySQL 数据库
- pentaho - Pentaho 无法从结果零日期值中获取值日值被禁止
- c++ - 布雷森汉姆线编码不画线
- elasticsearch - filebeat 和 logstash 事件大小计算
- javascript - Highcharts (HighStock) 不显示附加在其相应 x 轴上的工具提示
- r - 线性回归和模型与分组数据的比较
- react-native - React 原生社交媒体应用架构