导入Django models.Model时DJANGO_SETTINGS_MODULE报错如何解决?
问题根因
直接在未初始化Django环境的Python脚本中导入继承了models.Model的类,会触发Django的应用加载校验逻辑,你之前的操作缺少Django环境初始化的关键步骤,所以会反复报错。
标准解决方案
场景1:独立运行的Python脚本调用Django模型
在脚本最开头按如下顺序编写初始化代码,必须保证初始化代码在导入模型之前执行:
import os import django # 此处替换为你项目的settings路径,格式为「你的Django项目根目录名.settings」 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") # 执行Django环境初始化,完成所有应用、模型的加载 django.setup() # 初始化完成后再导入模型 from newapp.models import NewApp
你之前遇到的Apps aren't loaded yet报错,就是因为没有执行django.setup(),普通项目无需手动调用settings.configure(),该方法仅用于完全自定义配置的特殊场景。
场景2:PyCharm运行/调试脚本时的配置
- 打开右上角运行配置下拉框,选择「Edit Configurations」
- 找到对应脚本的配置项,在「Environment variables」栏添加变量:
DJANGO_SETTINGS_MODULE=myproject.settings(替换为你自己的项目settings路径) - 将「Working directory」设置为Django项目根目录(即
manage.py文件所在的目录)
额外排查点
- 确认
newapp已正确添加到settings.py的INSTALLED_APPS列表中,且包名无拼写错误 - 不要在
models.py文件的全局作用域编写模型查询、实例化相关代码,会在Django初始化阶段提前触发模型加载逻辑导致报错 - 仅做模型调试可直接执行
python manage.py shell进入Django交互环境,无需手动配置初始化逻辑,直接导入模型即可使用
内容的提问来源于stack exchange,提问作者sully_r
相关产品推荐
相关产品推荐

