2011-02-07 211 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