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
相关产品推荐
相关产品推荐

