Как фильтровать, сравнивая две информации из одной модели 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')))
Вернуться на верх