Фильтрация строк с одинаковым значением даты в столбце

У меня есть поле datetime, и я хочу отфильтровать строки, которые имеют одинаковое значение даты.

models.py

class EntryMonitoring(models.Model):
    student = models.ForeignKey('Student', models.DO_NOTHING)
    clockin = models.DateTimeField()
    clockout = models.DateTimeField(null=True)

views.py

def check_attendance(request, nid):
    day = EntryMonitoring.objects.filter(
        clockout__isnull=False, '# same value', student=nid
    ).annotate(...)
    
    # do something

Я хотел бы добавить внутри этого запроса фильтра, чтобы clockin__date имел то же значение, что и clockout__date. Возможно ли это? Если да, то какой запрос будет правильным для фильтрации?

Да, это возможно. Вы должны использовать функцию TruncDate:

from django.db.models import F
from django.db.models.functions import TruncDate

entries = EntryMonitoring.objects.filter(
    clockout__isnull=False, student=nid, clockin__date=TruncDate(F("clockout"))
).annotate(...)
    
Вернуться на верх