Django中对DateTime的过滤无效
我有一个SQLite数据库,其中有一个叫做timestamp的列,这个列是DateTime类型的。里面的值像这样:2014-10-14T14:51:07.558
在我的Django模型中,有这样一个字段:
timestamp = models.DateTimeField(db_column='timestamp', blank=False)
然后,当我运行以下代码时,结果却是一个空的集合:
Model.objects.filter(timestamp=Model.objects.all()[0].timestamp)
或者
edit: removed a 'contains' call
查询
Model.objects.all()[0].timestamp
返回的是
datetime.datetime(2014, 10, 14, 14, 51, 7, 558000, tzinfo=<UTC>)
为什么我无法进行过滤呢?
1 个回答
0
日期时间不是字符串;日期时间是一个独立的对象,所以它不能“包含”其他东西。根据Django的文档,sqlite没有原生的日期时间类型,因此Django使用字符串来代替,但在Python中,日期时间并不是字符串。
文档没有明确说明在使用__contains过滤日期时间字段时应该发生什么,但我觉得这样做没有太大意义。如果你想检查某个特定的日期时间是否在一个范围内,可以使用__range。
也就是说,你尝试了直接用=来过滤,但没有任何效果。可以尝试用str(<datetime>)
来过滤,因为在sqlite中它会被当作字符串处理。