Django后台添加文章时触发OperationalError:blog_post表不存在author_id列
看起来你遇到的是典型的模型定义与数据库表结构不同步的问题!
从你提供的初始迁移文件(0001_initial)可以看到,里面完全没有author相关的字段,说明你是在已经生成并应用了初始迁移之后,才给Post模型加上了author这个ForeignKey字段,但没有生成新的迁移文件来同步这个变更到数据库——这就导致数据库里的blog_post表根本没有author_id列,所以在后台添加文章时触发了OperationalError。
给你几个简单的步骤来解决这个问题:
第一步:生成新的迁移文件,让Django记录下你添加author字段的变更:
python manage.py makemigrations执行后,你会在
blog/migrations目录下看到一个新的迁移文件(比如0002_post_author.py),里面会包含添加author_id字段的操作逻辑。第二步:执行迁移,把这个变更同步到数据库中:
python manage.py migrate第三步:现在回到Django后台,尝试添加新文章,这个错误应该就会消失了。
小提醒:以后每次修改models.py里的模型字段(添加、删除、修改字段属性)后,都要记得先运行makemigrations生成迁移,再运行migrate同步到数据库,不然很容易出现模型和数据库结构不匹配的问题。另外,确认你的models.py里已经正确导入了User模型:from django.contrib.auth.models import User,从你的代码来看这部分应该是没问题的。
备注:内容来源于stack exchange,提问作者arielkoo
相关产品推荐
相关产品推荐

