Pycharm - 在Django控制台中自动加载模型

4
有没有类似于django-extensions shell_plus的方法可以在PyCharm Django控制台中自动加载模型?
2个回答

14
在 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

2

补充一下Yunti的回答,如果你想要将模型放在“models”模块中,你可以在运行脚本中动态创建一个模块,并将所有的模型添加到其中:

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下找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接