2011-02-07 204 views
0

我有一个工作列表。它们被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() 
+0

我看我可以使用timestamp__year =等,但对于timestamp__week ? – Harry 2011-02-07 16:30:37

+0

什么是`date_filter`? – 2011-02-07 17:15:24

回答

6

正确地说,您正试图过滤某一天发生的所有作业?因此,计算日期范围,然后使用您的过滤器:

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