按查询中的时间戳过滤
问题描述:
我有一个工作列表。它们被job_type过滤,并且完成= False/True。 例如:Job.objects.filter(job_type=1, complete=False)
按查询中的时间戳过滤
我怎么会被喜欢这份工作的戳过滤这些: job.timestamp.strftime(date_filter) == job.today().strftime(date_filter)
所以我想finaly返回像这样的列表:如果我理解你的问题
Job.objects.filter(
job_type=1,
complete=False,
timestamp.strftime(date_filter)=datetime.today().strftime(date_filter)
).distinct()
答
正确地说,您正试图过滤某一天发生的所有作业?因此,计算日期范围,然后使用您的过滤器:
from datetime import datetime, timedelta
today = datetime.now().date()
if date_filter == "day":
timestamp_from = datetime.now().date()
timestamp_to = datetime.now().date() + timedelta(days=1)
elif date_filter == "month":
# Etc...
elif date_filter == "year":
# Etc...
Job.objects.filter(
job_type = 1,
complete = False,
timestamp__gte = timestamp_from,
timestamp__lt = timestamp_to,
).distinct()
否则,你也许可以用做一些时髦的extra SQL WHERE clause
我看我可以使用timestamp__year =等,但对于timestamp__week ? – Harry 2011-02-07 16:30:37
什么是`date_filter`? – 2011-02-07 17:15:24