Как отфильтровать наборы запросов менее 60 месяцев назад?

models.py

class Preschooler(Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    birthday = models.DateField(null=True, blank=True)

    def age_months(self):
        today = date.today()
        date_diff = today - self.birthday
        in_days = date_diff.days

        return int((in_days) / (365 / 12))

Я хочу отфильтровать дошкольников, которым меньше 60 месяцев, используя их дату рождения, следующим образом:

Preschooler.objects.filter(birthday__month__lst=60)

Как я могу этого достичь?

Вы можете использовать Python relativedelta с datetime.today() [Python-doc] так:

from datetime import datetime

from dateutil.relativedelta import relativedelta 
less_than_60_mon = datetime.today() - relativedelta(months=60)
   
Preschooler.objects.filter(birthday__lt=less_than_60_mon)
Вернуться на верх