繁体   English   中英

Django Queryset日期时间过滤器

[英]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对象由年,月,日,时,分,秒,微秒组成。 因此,如果仅比较datehour ,请确保可以得到结果,但不能保证my_datetime_object与数据库中具有相同的分钟,秒和微秒的记录之一匹配。

快速尝试此操作,您将看到datetime的外观,以及有关DateTimeField django doc

from datetime import datetime
date = datetime.now()
print date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM