我目前正在将我的网站从PHP转换为Django,但由于我是Python的新手,所以我很难理解我的想法。
有时我的数据库中的日期不完整(即我可能不知道当天甚至是月份),因此目前有三个整数字段:date_year
,date_month
和date_day
。
我注意到MySQL接受'部分为空'date
字段(例如2004-04-00,1994-00-00),但Django只是将它们视为'完全'无效。
我只想以下列格式显示这些日期:
16 March 2009
(完全知道)March 2009
(未知日)2009
(未知日期和月份)我认为我将无法在MySQL中使用正确的date
字段,并且我必须在模型中创建一个仿date
然后使用自定义模板过滤器;有人能帮忙吗?
答案 0 :(得分:3)
您可以将两个日期时间存储为范围。如果午夜到午夜意味着“在这一天的某个时间”,如果范围是整整一个月,那就是你所知道的。如果你知道确切的时间,他们将是平等的。
答案 1 :(得分:1)
当MySQL以ALLOW_INVALID_DATES模式运行时,它不会对输入执行任何验证检查,因此您可以存储无效日期。这是标准SQL的扩展,因为Django是跨数据库兼容的,所以它不支持这一点。此外,Django将日期转换为Python日期对象,这些日期对象也不支持部分日期。
您最好的选择是将列拆分为三或将日期存储为文本并自行处理。
答案 2 :(得分:1)