gpt4 book ai didi

python - 如何在脚本中导入所有 django 模型及更多模型?

转载 作者:行者123 更新时间:2023-12-01 00:16:54 25 4
gpt4 key购买 nike

我已将以下代码放在脚本文件的顶部

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'momsite.conf.local.settings')
django.setup()

现在我可以导入我的 django 应用程序并运行小片段(主要用于测试内容)

我想导入通过settings.INSTALLED_APPS注册的所有模型

我知道https://github.com/django-extensions/django-extensions在运行 manage.py shell_plus 时执行此操作,它会自动导入所有模型及更多内容。

我正在查看他们的代码。不确定我是否能理解它。

https://github.com/django-extensions/django-extensions/blob/3355332238910f3f30a3921e604641562c79a0a8/django_extensions/management/commands/shell_plus.py#L137

目前,我正在执行以下操作,我认为它正在导入模型,但不知何故在脚本中不可用

 from django_extensions.management.shells import import_objects
from django.core.management.base import BaseCommand, CommandError

options = {}
style = BaseCommand().style
import_objects(options, style)
  • 编辑..采用 dirkgroten 的答案

import_objects 内部调用 from importlib import import_module 显然,我们需要用导入的类填充 globals()

 options = {'quiet_load': True}
style = BaseCommand().style

imported_objects = import_objects(options, style)
globals().update(imported_objects)

最佳答案

运行django.setup()后,执行以下操作:

from django.apps import apps
for _class in apps.get_models():
if _class.__name__.startswith("Historical"):
continue
globals()[_class.__name__] = _class

这将使所有模型类在脚本中作为全局变量使用。

关于python - 如何在脚本中导入所有 django 模型及更多模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59267620/

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