2011-02-07 5 views
0

У меня есть список вакансий. Они фильтруются по типу job_type и complete = False/True. Ex: Job.objects.filter(job_type=1, complete=False)Фильтровать по метке в запросе

Как бы фильтровать эти по временной меткой вакансии как: 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

Я вижу, что я могу использовать timestamp__year = и т.д., но как насчет timestamp__week ? – Harry

+0

Что такое 'date_filter'? –

+0

Его часть моего шаблона_tag, {% show_jobs "day"%}: это будет date_filter = day = '% j' – Harry

ответ

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

+0

спасибо! thats помогает выделить. я ценю это – Harry

Смежные вопросы