Как фильтровать, сравнивая две информации из одной модели Django
У меня есть модель MedicalCertificate следующего вида:
class MedicalCertificate(models.Model):
needs_leave = models.BooleanField()
date = models.DatetimeField()
days_off = models.IntegerField()
А мне нужно отфильтровать активные медицинские справки, которые имеют вид: date + days_off >= datetime.now()
Я пытался использовать F(), но безуспешно. Ex.:
from django.db.models import F
certificates = {
'needs_leave': True,
'days_off__gte': datetime.datetime.now() - F('externalsystemmedicalcertificates__date')
}
queryset = MedicalCertificate.objects.filter(**certificates)
Есть идеи, как действовать дальше?
Вам нужно отфильтровать те медицинские справки, которые старше текущей даты, поэтому вы также можете сделать запрос через дни:
Основное состояние:
days_off >= date.today().day - date__date__day
Вы можете запросить следующим образом:
from datetime import date
from django.db.models import F,Q
MedicalCertificate.objects.filter(
Q(needs_leave=True) & Q(days_off__gte=date.today().day - F('date__date__day')))