在非 django 项目主目录下(如独立 `main.py`)使用 `django.setup()` 时,需手动配置 python 路径与 `django_settings_module`,否则即使 `installed_apps` 已注册 `model_db`,python 仍无法定位该模块。
要在 Django 项目外部(例如根目录下的 main.py)成功导入并使用 model_db 中的模型,关键不在于 settings.configure() —— 而在于让 Django 正确识别项目结构和 Python 模块路径。你当前的写法:
from DATABASE.Django_ORM.Django_ORM import settings as st settings.configure(default_settings=st, DEBUG=True)
存在两个根本性问题:
✅ 正确做法是:模拟 Django 命令行环境,即通过 os.environ.setdefault("DJANGO_SETTINGS_MODULE", ...) 显式指定设置模块路径,并确保项目根目录(含 manage.py 的同级目录)在 sys.path 中。
根据你的目录结构(DATABASE/Django_ORM/ 是 Django 项目根,其中 Django_ORM/Django_ORM/settings.py 是设置文件),请在 main.py 中使用以下标准初始化方式:
import os import sys import django from django.conf import settings # Step 1: 将 Django 项目根目录(即 manage.py 所在目录)加入 Python 路径 django_root = os.path.join(os.path.dirname(__file__), 'DATABASE', 'Django_ORM') sys.path.append(django_root) # Step 2: 设置 DJANGO_SETTINGS_MODULE 环境变量(指向 settings 模块的 Python 路径) os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Django_ORM.settings') # Step 3: 初始化 Django(必须在导入任何 models 之前调用) django.setup() # ✅ 现在可以安全导入 model_db 中的模型 from model_db.models import YourModel # 注意:直接 from model_db import models 也可,但推荐明确导入具体模型
? 注意事项:
? 提示:为便于维护,可将上述初始化逻辑封装为 django_setup.py 工具模块,在多个外部脚本中复用。一旦配置正确,model_db 及其模型即可像在 shell 或视图中一样正常使用。