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

为什么我会出现要求YYYY-MM-DD时间格式的Django ValidationError错误?

问题根因

你遇到的报错是因为给Django的DateTimeField字段传入了空字符串,而非None值。
你模型里定义的Post.timeStamp和BlogComment.timestamp字段虽然同时设置了blank=True(表单层面允许空输入)和null=True(数据库层面允许存储NULL值),但Django的字段校验逻辑只会把None识别为合法的空值,空字符串""会被当做普通字符串做日期格式校验,不符合YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]的格式要求,因此抛出ValidationError。

修复方案
  • 检查所有保存Post、BlogComment数据的逻辑(包括视图函数、表单处理、后台操作逻辑):如果获取到的时间参数为空字符串,先将字段值赋值为None再调用save()方法保存。
  • 若需求是创建数据时自动填充当前时间,可直接给字段增加auto_now_add=True参数,无需手动赋值即可避免空值问题,修改后的字段示例:
# Post类中的时间字段
timeStamp = models.DateTimeField(blank=True, null=True, auto_now_add=True)
# BlogComment类中的时间字段
timestamp = models.DateTimeField(blank=True, null=True, auto_now_add=True)

说明:auto_now_add会在数据首次创建时自动写入当前时间,后续不会自动更新;如果需要每次修改数据都更新时间,可替换为auto_now=True。

  • 临时验证方法:在调用save()方法前打印两个时间字段的赋值,确认是否存在空字符串,替换为None后即可验证问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:04