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

Django添加模型字段遇OperationalError及makemigrations报错求助

解决Django添加字段时的OperationalError与makemigrations报错问题

问题根源

给已有数据的模型添加非空字段money时,数据库需要为现有行填充该字段的值,但你既没在模型中设置默认值,也没允许字段为空,导致makemigrations无法生成迁移文件;同时因为数据库未同步新增字段,访问admin页面时触发OperationalError(找不到money列)。

具体解决方案

方案1:修改模型设置默认值或允许字段为空

根据业务需求二选一:

  • 若money字段必须有值,给字段添加default参数:
class CourseModel(models.Model):
    cname = models.CharField(max_length=15)
    dur  = models.IntegerField()
    fee = models.IntegerField()
    money = models.IntegerField(default=0)  # 默认值可根据业务调整
  • 若业务允许money为空,设置null=True和blank=True:
class CourseModel(models.Model):
    cname = models.CharField(max_length=15)
    dur  = models.IntegerField()
    fee = models.IntegerField()
    money = models.IntegerField(null=True, blank=True)

修改后执行以下命令同步数据库:

python manage.py makemigrations
python manage.py migrate

方案2:执行makemigrations时提供一次性默认值

无需修改模型,执行python manage.py makemigrations时,选择选项1,输入一个默认值(比如0),之后执行python manage.py migrate完成数据库同步。

注意事项

必须完成migrate操作后,再访问/admin/app1/coursemodel/页面,否则仍会出现OperationalError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:05:23