Spróbuję ci pokazać to bez odsłonięcia danych klientów

Pytanie:

Booking.objects.filter(startTime__year__gte=2020, startTime__month__gte=7,startTime__day__gte=27, depositPaid=True).order_by('startTime')

Powinno to pokazać wszystkie rezerwacje od 27 lipca, włącznie, do przyszłości bez ograniczeń. Jednak granice trwa 8 miesiąca. Żadna z rezerwacji pokazuje sierpień.

Jeśli biegnę:

Booking.objects.filter(startTime__year__gte=2020, startTime__month__gte=8,startTime__day__gte=1, depositPaid=True).order_by('startTime')

Potem otrzymuję wszystkie rezerwacje w sierpniu. Nie rozumiem, dlaczego startTime__month__gte=7 nie pokazuje sierpnia.

0
User 27 lipiec 2020, 06:05

1 odpowiedź

Najlepsza odpowiedź

Filtrowanie day__gte=27 Zwróciłoby również wyniki, w którym dzień miesiąca jest 27 lub większy bez względu na to, co miesiąc jest, daty w sierpniu, gdzie dzień jest mniejszy niż 27 nie zostanie zwrócony.

Jeśli chcesz filtrować wyniki po określonej dacie, powinieneś to zrobić jako pojedyncze zapytanie na kolumnie, a nie jako indywidualne zapytania na części daty.

import datetime
Booking.objects.filter(startTime__gte=datetime.date(2020, 7, 27), depositPaid=True).order_by('startTime')
1
Iain Shelvington 27 lipiec 2020, 03:11