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

Django教程Part2报no such table: polls_question错误排查

问题原因

报错来自三类问题:

  • 执行迁移命令时polls应用未被Django正确识别,导致polls_question表根本没被创建,触发初始的「表不存在」错误
  • 手动创建数据库表的操作不符合Django ORM的表结构规范,缺失模型定义的字段,触发后续的「字段不存在」错误
  • models.py存在语法缩进错误:Question模型的__str__方法被定义在了类外部,不属于类方法,后续模型使用会触发异常。
修复步骤

按顺序操作即可解决:

  1. 修正models.py的缩进错误,确保__str__方法属于Question类,修正后代码如下:
    from django.db import models
    
    
    class Question(models.Model):
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    
        def __str__(self):
            return self.question_text
    
    
    class Choice(models.Model):
        question = models.ForeignKey(Question, on_delete=models.CASCADE)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)
        
        def __str__(self):
            return self.choice_text
    
  2. 确认应用注册配置:打开mysite/settings.py,找到INSTALLED_APPS列表,确保其中包含'polls.apps.PollsConfig'配置项,缺失则补上。没有这行配置Django不会识别polls下的模型,所有迁移操作都不会生效。
  3. 清理错误的历史文件:删除项目根目录下手动修改过的db.sqlite3文件,再删除polls/migrations/目录下除__init__.py之外的所有残留文件。
  4. 重新执行迁移:在manage.py所在的项目根目录,激活你使用的django3虚拟环境,依次执行以下命令:
    python manage.py makemigrations polls
    python manage.py migrate
    

执行完成后进入shell测试Question.objects.all()即可正常运行。

注意:Django的迁移系统会自动维护表结构、字段类型、约束、外键关联,不要手动修改ORM映射的数据库表,否则极易出现结构不匹配的错误。

内容的提问来源于stack exchange,提问作者Vanessa Pires de Almeida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:03:18