You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django教程中用Python脚本操作数据库时遇导入错误求助

解决Django脚本操作数据库的导入错误问题

嘿,我猜你碰到的导入错误大概率是因为脚本没有加载Django的运行环境——毕竟Django的模型不是普通Python模块,它依赖项目的配置上下文才能被正确导入。我来一步步帮你搞定这个问题:

第一步:初始化Django环境

在你的脚本最开头,必须先告诉Python去哪里找Django的项目配置,添加这段代码:

import os
import django

# 替换成你自己的项目settings路径,比如如果项目叫mysite,就是mysite.settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings')
django.setup()

没有这一步,Python根本不知道你的Django项目结构,自然找不到polls.models。

第二步:修正脚本里的小问题

看你的代码里还有几个可以优化的地方:

  • qtext=q是引用赋值,修改qtext会直接改变q数组,建议改成qtext = q.copy()来创建独立副本
  • q[2,2]=...没写完,我帮你补了个示例选项

修正后的完整脚本如下:

import os
import django
import numpy as np

# 初始化Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings')
django.setup()

# 现在可以正常导入模型了
from polls.models import Question, Choice
from django.utils import timezone

# Questions
nquestions = 3
q = np.empty([nquestions, 10], dtype=object)
qtext = q.copy()  # 用copy避免引用赋值的关联问题
qtext[0] = "What's up?"
qtext[1] = "What's new?"
qtext[2] = "What's old?"

# Choices
q[0,1] = "Not much"
q[0,2] = "The sky"
q[1,1] = "This question"
q[1,2] = "This answer"
q[2,1] = "No more originality"
q[2,2] = "The same old stuff"  # 补全未完成的选项

# 实际写入数据库的逻辑(你之前的脚本缺这部分,补上示例)
for i in range(nquestions):
    # 创建Question记录
    question = Question.objects.create(
        question_text=qtext[i],
        pub_date=timezone.now()
    )
    # 为每个问题添加对应选项
    choice_index = 1
    while q[i, choice_index] is not None:
        Choice.objects.create(
            question=question,
            choice_text=q[i, choice_index],
            votes=0
        )
        choice_index += 1

额外注意事项

  • 运行脚本时,确保终端处于Django项目根目录(就是包含manage.py的文件夹)
  • 检查你的polls app是否已经添加到项目settings.py的INSTALLED_APPS里,不然模型还是会找不到
  • 如果你只是临时操作数据库,其实可以直接用Django自带的python manage.py shell,它会自动加载环境,不用手动写初始化代码

内容的提问来源于stack exchange,提问作者Marcus Grass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:09:40