Как отфильтровать запрос по дате создания?
У меня есть запрос, и я хочу перечислить объекты, которые были созданы сегодня.
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))