有没有办法在pycharm django控制台中自动加载模型(与django-extensions shell_plus的工作方式类似)?
答案 0 :(得分:8)
在pycharm设置中,django控制台设置可以有一个起始脚本:
这将自动加载django模型,如shell_plus:
import sys
import django
django.setup()
from django.apps import apps
for _class in apps.get_models():
globals()[_class.__name__] = _class
答案 1 :(得分:1)
要扩展Yunti的答案,如果您希望在“模型”模块中对模型进行命名空间,则可以在运行脚本中即时创建一个模块并将所有模型添加到其中:
import sys
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
import django
django.setup()
import types
from django.apps import apps
models = types.ModuleType('models')
for _class in apps.get_models():
setattr(ext_models, _class.__name__, _class)
要走得更远,如果您正在开发特定的django应用程序,并且希望外部模型位于与应用程序模型不同的命名空间中,则可以进一步扩展此范围:
import sys
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
import django
django.setup()
import types
from django.apps import apps
from your_project.your_app import models as your_models # and views and tests and all the modules you want to import :)
ext_models = types.ModuleType('ext_models')
for _class in apps.get_models():
_class_name = _class.__name__
if not hasattr(your_models, _class_name):
setattr(ext_models, _class_name, _class)
现在,所有模型都可以在your_models下使用。并且所有外部模型(例如AccessToken,Group等)都可以在ext_models下找到。