我有一个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>)
为什么我不能过滤?
答案 0 :(得分:0)
日期时间不是字符串;日期时间是一个单独的对象,因此它不能完全“包含”除自身以外的任何内容。根据django文档,sqlite没有本机日期时间类型,而django使用字符串,但在python日期时间不是字符串。
文档不清楚使用__contains过滤日期时间字段会发生什么,但对我来说这没有多大意义。如果您要检查特定日期时间是否在某个范围内,请使用__range。
那就是说,你试过一个直的=过滤器,它没有任何效果。尝试对str(<datetime>)
进行过滤,因为它将是sqlite中的字符串。