[英]Django Queryset Datetime Filter
在我的一个模型中,我有一列的格式如下:
TEMP_START = models.DateTimeField(null=True)
我正在尝试使用queryset语法进行精确查找,例如
x.filter(TEMP_START=my_datetime_object) # x can be thought of as y.objects.all()
如果应该执行多个操作,则不返回任何对象。 然而,
x.filter(TEMP_START__date=my_datetime_object.date()).filter(TEMP_START__hour=my_datetime_object.hour)
确实会返回正确的对象(每小时一次)。 是否不支持直接日期时间过滤器,因此必须使用关键字?
======编辑结果不佳:
Searching for: {'TEMP_START': datetime.datetime(2016, 3, 31, 2, 0)}
Values in column: [{'TEMP_START': datetime.datetime(2016, 3, 29, 8, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 29, 14, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 30, 2, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 29, 20, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 30, 8, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 30, 20, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 31, 2, 0)}, {'TEMP_START': datetime.datetime(2016, 3, 30, 14, 0)}]
Values being returned: []
Code:
args_timeframe_start = {variables.temp_start: self.ranked_timeframes[rank][variables.temp_start]}
print(args_timeframe_start)
print(self.query_data.values(variables.temp_start).distinct())
query_data = self.query_data.filter(**args_timeframe_start)
print(query_data.values(variables.temp_start).distinct())
您需要找出什么是my_datetime_object
但最有可能是因为DateTime字段包含python datetime.datetime
对象,所以datetime.datetime
对象由年,月,日,时,分,秒,微秒组成。 因此,如果仅比较date
和hour
,请确保可以得到结果,但不能保证my_datetime_object
与数据库中具有相同的分钟,秒和微秒的记录之一匹配。
快速尝试此操作,您将看到datetime的外观,以及有关DateTimeField
django doc :
from datetime import datetime
date = datetime.now()
print date
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.