Первый - datetime.now().day
даст вам день месяца (например, 18
, если сегодня 18 марта 2020 года), но вы сказали, что хотите сегодняшнюю дату. Ниже приведено предположение, что вам нужна сегодняшняя дата, а не день месяца.
(ПРИМЕЧАНИЕ: weAreStarDust указал, что это поле DateTimeField, а не DateField, которое я пропустил и обновил ответ для )
То, как вы делаете это сейчас, кажется, что он может извлечь все Rest
из базы данных и затем отфильтровать их в коде вашего приложения (при условии, что rests_list comes from something like
Rest.objects.all () `. Как правило, вы хотите выполнить как можно больше фильтрации самого запроса к базе данных и как можно меньше фильтрации в клиентском коде.
В этом случае вы, вероятно, захотите сделать следующее:
from datetime import date
Rest.objects.filter(date__date=date.today())
Это вернет только те записи с сегодняшней датой, которые вам нужны.
Если у вас уже есть все остатки, и вы просто хотите чтобы отфильтровать их с сегодняшнего дня, вы можете использовать:
filter(lambda x: x.date.date() == date.today(), rests_list)
, который вернет объект фильтра, содержащий только элементы в rests_list
, которые имеют date
== date.today()
. Если вы хотите это как список, а не как итерация, вы можете сделать:
list(filter(lambda x: x.date.date() == date.today(), rests_list))
или для кортежа:
tuple(filter(lambda x: x.date.date() == date.today(), rests_list))
ПРИМЕЧАНИЕ. Если вы действительно хотите хранить только дату, Я бы посоветовал рассмотреть возможность использования DateField
(хотя нет, если вы хотите хранить любую информацию о часовом поясе). Если вы хотите сохранить DateTime, я бы посоветовал переименовать поле с date
на datetime
или started_at
- вызвать дату поля, но указание даты и времени может быть немного запутанным и привести к ошибкам.