我的一个模型中有一个格式化的列:
TEMP_START = models.DateTimeField(null=True)
我正在尝试使用查询集语法(如
)进行精确查找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())
答案 0 :(得分:1)
你需要找出什么是my_datetime_object
但很可能是因为DateTime字段包含python datetime.datetime
个对象,datetime.datetime
个对象由年,月,日,小时,分钟,秒组成,微秒。因此,如果您只是比较date
和hour
,请确保您可以获得结果,但您无法保证my_datetime_object
与数据库中具有相同分钟的某条记录相匹配,秒和微秒。
快速尝试,您可以看到日期时间的样子,django doc关于DateTimeField
:
from datetime import datetime
date = datetime.now()
print date