Фильтровать по отметке времени в Query - PullRequest
1 голос
/ 07 февраля 2011

У меня есть список работ.Они фильтруются по типу job_type и завершаются = False / True.Пример: 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()

1 Ответ

10 голосов
/ 08 февраля 2011

Если я правильно понимаю ваш вопрос, вы пытаетесь отфильтровать все задания, которые происходят в определенный день?Поэтому вычислите диапазон дат, а затем используйте его в своем фильтре:

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()

В противном случае вы могли бы сделать что-то необычное с помощью дополнительного SQL WHERE предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...