Как отфильтровать запрос по дате создания?

У меня есть запрос, и я хочу перечислить объекты, которые были созданы сегодня.

query_emails = Email.objects.values('mail_from').annotate(mail_count=Count('mail_from'), mailts=F('mail_timestamp')).order_by()

mail_timestamp - это день создания, и он должен быть сегодня, так что, например

.filter(mail_timestamp=today)

Вывод mail_timestamp является

'mailts': datetime.datetime(2021, 11, 8, 8, 9, 35, tzinfo=<UTC>)

Я использовал today = datetime.now(), но это не сработало.

Как я могу отфильтровать дату этого типа?

from datetime import date
date.today()

это должно работать

today означает, что дата почты должна быть меньше, чем завтра 00:00:00 и больше, чем вчера 23:59:59:

from datetime import datetime, timedelta
import pytz

from_date = (datetime.now() - timedelta(1)).replace(hour=23, minute=59, second=59, microsecond=999999, tzinfo=pytz.UTC)
to_date = (datetime.now() + timedelta(1)).replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=pytz.UTC)

# if mail_timestamp field type is Datetime:
Email.objects.filter(mail_timestamp__lt=to_date).filter(mail_timestamp__gt=from_date)

# if mail_timestamp field type is timestamp (integer representation):
Email.objects.filter(mail_timestamp__lt=datetime.timestamp(to_date)).filter(mail_timestamp__gt=datetime.timestamp(from_date))
Вернуться на верх