Django通过cmd创建对象无法保存,报错sabin_task表无title字段如何解决
问题根因
这个错误是Django模型定义和实际数据库表结构不匹配导致的。你在models.py中给Task模型定义了title字段,但数据库中的sabin_task表并没有同步新增这个字段,所以ORM执行写入操作时找不到对应字段抛出异常。
解决步骤
- 先确认
sabin应用已经添加到项目settings.py的INSTALLED_APPS列表中,否则Django不会识别该应用的模型变更。 - 打开命令行进入项目根目录(和
manage.py同级的目录),执行命令生成迁移文件:
python manage.py makemigrations sabin
- 执行迁移命令,将模型变更同步到数据库:
python manage.py migrate sabin
如果执行上述步骤后仍报错,说明存在旧迁移冲突或者旧表结构残留,可执行以下操作重置(注意:该操作会清空现有数据库数据,有重要数据请提前备份):
- 删除
sabin应用下migrations文件夹中除__init__.py外的所有文件 - 若使用默认Sqlite数据库,直接删除项目根目录的
db.sqlite3文件;若使用MySQL/PostgreSQL等数据库,手动删除库中的sabin_task表 - 重新执行上述
makemigrations和migrate命令即可
操作完成后重新进入Django shell执行ORM操作即可正常保存数据。
内容的提问来源于stack exchange,提问作者Dhiraj
相关产品推荐
相关产品推荐

