Фильтрация в Python / Django по дате, без учета времени - PullRequest
4 голосов
/ 27 июля 2010

Я бы хотел отфильтровать объекты по дням с указанием даты и времени, но не могу найти примеров того, как это сделать где-либо.

Это, например, отлично работает при объединении всех следующих событий:

@login_required
def invoice_picker(request):
    """Grab a date from the URL and show all the invoicable deliveries for that day."""
    query = request.GET.get('q' , '2/9/1984')
    date = datetime
    date = datetime.strptime('7/14/2010', '%m/%d/%Y')
    date = date.strptime(query, '%m/%d/%Y')
    results = []
    if query:
        results = LaundryDelivery.objects.filter(end__gte=date)
    return render_to_response('invoicer.html', {
        'results' : results,
        'date' : date,
        'user' : request.user,
    })

Но когда я удаляю __gte, он ничего не возвращает, потому что даты соответствуют строчкам 2010-06-22 04:04:00 вместо 2010-06-22 00:00:00.Я также попытался:

 results = LaundryDelivery.objects.filter(end.date=date)

, но, к сожалению, я получаю ошибку "ключевое слово не может быть выражением".Есть идеи?

1 Ответ

8 голосов
/ 27 июля 2010

Я не думаю, что есть хороший способ сравнить даты с датами. Одним из способов является следующее:

filter(end__year=date.year, end__month=date.month, end__day=date.day)

Другой - использовать поиск range с минимальным и максимальным временем для дня.

...