Дата и время запроса к дате сегодня в Django
Я сохраняю datetime
в db для объекта. Я хотел бы запросить у db и выбрать что-нибудь из сегодняшнего date
, а не datetime.
Какой самый простой способ сделать это? Это не работает:
invoice_for_today = Invoice.objects.get(user=user, date=date.today())
Ответы
Ответ 1
Я помню, что планировалось добавить поиск в поле __date
, чтобы сделать это проще, но поскольку он соответствует стандартным способам его выполнения,
today_min = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
today_max = datetime.datetime.combine(datetime.date.today(), datetime.time.max)
Invoice.objects.get(user=user, date__range=(today_min, today_max))
Ответ 2
Вы также можете сделать что-то вроде этого:
today = date.today()
invoice_for_today = Invoice.objects.filter(date__year=today.year, date__month=today.month, date__day=today.day)
Ответ 3
в Джанго <1,9
from django.utils.timezone import datetime #important if using timezones
today = datetime.today()
foo_for_today = Foo.objects.filter(datefield__year=today.year, datefield__month=today.month, datefield__day=today.day)
в Django> 1,9, так как они добавили ключевое слово date
foo_for_today = Foo.objects.filter(datefield__date=datetime.date.today())
Ответ 4
obj = TeachersPlanner.objects.filter(date__startswith=date.today())
Ответ 5
Попробуйте использовать клавиши date__gte
и date__lte
. Вы можете передать два объекта datetime, обозначающие границы того, что вы хотите сопоставить.
Ответ 6
В Django 1.9 есть новый поиск поля __date, который вы можете использовать:
Entry.objects.filter(pub_date__date = datetime.date(2005, 1, 1)) Entry.objects.filter(pub_date__date__gt = datetime.date(2005, 1, 1))
API Queryset
Ответ 7
Чтобы получить записи из Последние 24 часа, вы можете использовать:
from datetime import datetime, timedelta
Entry.objects.filter(pub_date__gte = datetime.now() - timedelta(days=1))