使用SQLite进行测试时,Django会在保存到数据库时自动将字符串转换为日期时间,但会丢弃无效字符串的更新而不会出错。所有Django数据库后端的这种行为是否一致?这记录在哪里?另外,如何确定我从外部源(不是Django表单)收到的字符串形式的日期时间是否对Django的数据库有效?
查看代码,django.utils.dateparse.parse_datetime
似乎是Django在其SQLite数据库后端中使用的内容。其他数据库后端似乎不使用它,也不与Django表单使用的DATETIME_INPUT_FORMATS
交互。
答案 0 :(得分:2)
SQLite没有为存储日期留出的存储类 和/或时间。相反,SQLite的内置日期和时间函数 能够将日期和时间存储为TEXT,REAL或INTEGER 值
https://www.sqlite.org/datatype3.html#section_2_2
因此,这种行为与PostgreSQL和mysql非常不同,后者恰好具有日期,时间和日期时间的单独数据类型。
所以回答“这个行为在所有Django数据库后端中是否一致?”是没有
“这在哪里记录?”参考上面的链接
“另外,如何判断我从外部源(不是Django表单)收到的字符串形式的日期时间是否对Django的数据库有效?”这取决于。如果您在从外部来源收到特定日期和时间时遇到问题,我会就此提出一个单独的问题。