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

Django报错django.db.utils.OperationalError: no such column: home_student.schoolYear,该如何修复?

Django报错django.db.utils.OperationalError: no such column: home_student.schoolYear,该如何修复?

看起来你遇到的问题很典型——你在Student模型里新增了schoolYear字段,但这个变更还没同步到数据库中,所以Django查询数据库时找不到对应的列。按下面的步骤就能轻松修复:

步骤1:生成迁移脚本

在项目根目录(就是包含manage.py的那个文件夹)打开终端,运行以下命令:

python manage.py makemigrations

这个命令会扫描你models.py的变化,自动生成一个迁移文件,记录需要给数据库添加schoolYear列的操作。

步骤2:将迁移应用到数据库

接着运行下面的命令,把刚才生成的迁移脚本执行到数据库中:

python manage.py migrate

执行完成后,数据库里的home_student表就会新增schoolYear列,你的错误应该就消失了。

额外检查点

  • 确认你确实在正确的目录下运行命令(必须是有manage.py的目录)
  • 检查models.py里的schoolYear字段拼写是否正确,和表单里引用的字段名一致
  • 如果之前还有未应用的迁移,migrate命令会一次性处理所有待执行的数据库变更

附上你提供的代码参考:

models.py

class Person(models.Model): 
    firstname = models.CharField(max_length=30)
    lastname = models.CharField(max_length=30)
    othernames = models.CharField(max_length=40)
    dateOfBirth = models.DateField()
    gender = models.CharField(max_length=20)
    birthGender = models.CharField(max_length=20)
    email = models.EmailField(max_length=100)
   
class Student(Person):
    studentId = models.IntegerField()
    admissionDate = models.DateField()
    enrolmentStatus = models.BooleanField()
    studentExamCode = models.IntegerField()
    schoolYear = models.IntegerField()

forms.py

class studentF(ModelForm):
    class Meta:
        model = Student
        fields = ['firstname', 'lastname', 'othernames', 'dateOfBirth', 'gender', 'birthGender', 'email', 'studentId', 'admissionDate', 'enrolmentStatus', 'studentExamCode', 'schoolYear']

备注:内容来源于stack exchange,提问作者Clowesy Dan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:19:35