shr*_*tti 2 python database django django-models
fld_date_time = models.DateTimeField(db_column='FLD_DATE_TIME', blank=True, null=True, default="0001-00-00 00:00:00")
Run Code Online (Sandbox Code Playgroud)
models.py 中的该字段抛出错误:
[“'0000-00-00 00:00:00'值具有正确的格式(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]),但它是无效的日期/时间。” ]
如何在django中添加默认值?
问题是你的默认值没有意义。没有第零天,也没有第零月。Python 可以表示为对象的最小日期datetime是:
>>> datetime.min
datetime.datetime(1, 1, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
所以 1 月 1 日。在一些(大多数)数据库中,该范围甚至更具限制性。例如,在MySQL中,范围是:
该
DATE类型用于包含日期部分但不包含时间部分的值。MySQL 以格式检索并显示DATE值'YYYY-MM-DD'。支持的范围是'1000-01-01'到'9999-12-31'。该
DATETIME类型用于包含日期和时间部分的值。MySQL 以格式检索并显示DATETIME值'YYYY-MM-DD HH:MM:SS'。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。该
TIMESTAMP数据类型用于包含日期和时间部分的值。TIMESTAMP范围为'1970-01-01 00:00:01'UTC 到'2038-01-19 03:14:07'UTC。
MySQL确实有“零日期”:
无效的
DATE、DATETIME、 或TIMESTAMP值将转换为适当类型的“零”值('0000-00-00'或'0000-00-00 00:00:00')。
但是没有好的方法可以将其包装到datetime对象中,因为如前所述,它超出了可表示的范围。
您可以使用此处提出的解决方案,该解决方案基本上构造一个新的 DjangoZeroDateTimeField来映射None此零值。但据我所知,您可以不使用标准来执行此操作DateTimeField。
datetime因此,您可以使用数据库可表示的最小可表示对象,也可以使用NULL它。
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |