Фильтрация строк с одинаковым значением даты в столбце
У меня есть поле 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(...)