在Django中过滤DateTime不起作用

时间:2014-10-16 21:09:59

标签: python django sqlite

我有一个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 :(得分:0)

日期时间不是字符串;日期时间是一个单独的对象,因此它不能完全“包含”除自身以外的任何内容。根据django文档,sqlite没有本机日期时间类型,而django使用字符串,但在python日期时间不是字符串。
文档不清楚使用__contains过滤日期时间字段会发生什么,但对我来说这没有多大意义。如果您要检查特定日期时间是否在某个范围内,请使用__range

那就是说,你试过一个直的=过滤器,它没有任何效果。尝试对str(<datetime>)进行过滤,因为它将是sqlite中的字符串。