gpt4 book ai didi

python - Django:在 models.py 上使用 apps.get_model 获取模型

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:35 25 4
gpt4 key购买 nike

关于 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') 在 vi​​ews.py 上运行良好,但在 models.py 上运行不正常。因为根据 django,所有 models.py 在 settings.py 之后被调用,然后是 View 和其他。所以在尝试在 models.py 中使用 get_model 时出现此错误

File "/home/mypc/.virtualenvs/VSkillza/lib/python3.6/site-packages/django/apps/registry.py", line 132, in check_models_ready raise AppRegistryNotReady("Models aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

提前致谢:)

最佳答案

您可以通过将导入移动到自定义函数内来打破循环导入。这样,模型会在函数运行时加载,而不是在模块加载时加载。

def my_function():
from myapp.models import MyModel

循环导入表明你的代码结构不正确,但我们不能给你任何建议,因为你没有展示它。

关于python - Django:在 models.py 上使用 apps.get_model 获取模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52185044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com