Как отфильтровать DateTimeField по сегодняшним датам?

В Django для фильтрации объектов по сегодняшней дате можно использовать метод filter() в комбинации с объектом datetime.date.today().

Вот пример кода, который позволит отфильтровать объекты модели по полю DateTimeField, чтобы получить только те, которые соответствуют сегодняшней дате:

from datetime import date
from django.db.models import DateTimeField

today = date.today()
# Получаем сегодняшнюю дату в формате date

objects = MyModel.objects.filter(date_field__date=today)
# Здесь MyModel - это ваша модель, а date_field - это поле DateTimeField, которое вы хотите отфильтровать.

В приведенном коде мы использовали __date после имени поля DateTimeField, чтобы получить только дату без времени. Затем мы сравниваем это сегодняшнее значение с полем date_field в модели MyModel.

Особенность Django состоит в том, что DateTimeField включает в себя и дату, и время. Если вы хотите отфильтровать по времени, вам необходимо дополнительно использовать точное значение, например:

from datetime import datetime, time

now = datetime.now()
# Получаем текущую дату и время

objects = MyModel.objects.filter(date_field__date=today, date_field__time__gte=now.time())
# Фильтруем объекты модели по сегодняшней дате с текущим временем или позже.

В данном примере мы добавили date_field__time__gte=now.time(), чтобы отфильтровать только те объекты, у которых время равно текущему времени или позднее.

Важно отметить, что результатом фильтрации filter() будет QuerySet, который будет содержать только объекты, удовлетворяющие вашему фильтру. Вы можете использовать этот QuerySet дальше для выполнения других операций, например, для получения конкретного поля или сортировки объектов.

Надеюсь, этот ответ решит вашу проблему с фильтрацией DateTimeField по сегодняшней дате в Django.