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

Django执行migrate时报DateTimeField空值格式错误如何解决

问题根因

你此前执行makemigrations生成的home.0004_alter_contactme_timestamp迁移文件中,已经固化了你当时输入的空字符串默认值,即便后续你修改了models.py中的字段配置,这份有错误的迁移文件依然会在执行migrate时生效,所以会持续抛出时间格式不匹配的报错。
另外你当前recommend模型的__str__方法也存在逻辑错误:你调用了self.recommend,但你的模型中没有命名为recommend的字段,后续运行会触发属性不存在异常,建议替换为你实际存在的comment字段。

修复步骤
  • 第一步:删除错误迁移文件
    进入home应用的migrations目录,删除0004_alter_contactme_timestamp.py文件。如果该目录下还有版本号大于0004的迁移文件,本地开发环境可一并删除;如果是生产环境已经应用过的迁移,不要直接删除,需单独处理已入库的脏数据。
  • 第二步:确认字段配置
    可根据业务需求保留null和blank配置,参考配置如下:
    from django.utils.timezone import now
    # ...其余代码保持不变
    timestamp = models.DateTimeField(default=now, null=True, blank=True)
    # 修复__str__方法的字段引用错误
    def __str__(self):
        return self.comment[0:20] + "..." + "by" + self.user.username
    
  • 第三步:重新生成迁移文件
    执行命令:
    python manage.py makemigrations
    此时你已经配置了default=now,不会再弹出要求输入默认值的提示。
  • 第四步:执行迁移
    执行命令:
    python manage.py migrate
    即可正常完成迁移操作。

如果是本地开发场景,上述操作执行后还是报错,可以直接删除项目根目录下的sqlite数据库文件,再重新执行一次迁移命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:57:02