执行Django命令时api_task.content列缺失错误求助
解决 django.db.utils.OperationalError: no such column: api_task.content 问题
问题排查与修复步骤
1. 修正模型字段的写法问题
你的Task模型给字段添加了Python类型注解(如id: str = models.UUIDField(...)),部分Django版本无法正确识别这种写法,会导致migrations生成异常,进而数据库字段无法正常创建。
修改模型代码,移除字段的类型注解:
import uuid from django.db import models from django.contrib.auth.models import User class Task(models.Model): id = models.UUIDField( unique=True, auto_created=True, primary_key=True, default=uuid.uuid4, editable=False, ) content = models.CharField( default="", max_length=255, ) deadline = models.IntegerField( default=None, null=True, blank=True, ) creationDate = models.DateField(auto_now_add=True) author = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return str(self.id) + str(self.content)
2. 彻底清理残留的migrations文件
- 确认删除的是
apiapp下的migrations文件夹,不要误删项目其他位置的migrations文件 - 同步删除该app下
__pycache__目录里的缓存文件,避免旧配置残留 - 若其他app存在关联Task模型的migrations文件,也需一并清理
3. 重新执行数据库初始化命令
按以下顺序执行命令:
# 确保数据库文件已删除,未删除则先执行 rm db.sqlite3 # 指定api app生成migrations文件 ./manage.py makemigrations api # 同步migrations到数据库 ./manage.py migrate # 启动服务 ./manage.py runserver
注意:指定
apiapp执行makemigrations,避免Django忽略该app的模型变更
4. 验证Django配置
检查项目settings.py的INSTALLED_APPS中是否已正确添加api app:
# settings.py INSTALLED_APPS = [ # 其他默认app 'api', ]
内容的提问来源于stack exchange,提问作者Alex Ironside
相关产品推荐
相关产品推荐

