我有一份工作清单。它们按job_type过滤,完成= False / True。
例如:Job.objects.filter(job_type=1, complete=False)
我如何通过Job的时间戳过滤这些:
job.timestamp.strftime(date_filter) == job.today().strftime(date_filter)
所以我想最后返回一个这样的列表:
Job.objects.filter(
job_type=1,
complete=False,
timestamp.strftime(date_filter)=datetime.today().strftime(date_filter)
).distinct()
答案 0 :(得分:10)
如果我理解你的问题是正确的,那么你是否试图过滤某一天发生的所有工作?因此,计算一个日期范围,然后在过滤器中使用它:
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
做一些时髦的事情