Django中对DateTime的过滤无效

1 投票
1 回答
512 浏览
提问于 2025-04-28 00:46

我有一个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中它会被当作字符串处理。

撰写回答