Как получить все объекты с определенным интервалом времени в django

Я хочу получить все объекты, которым осталось жить следующие 5 секунд с помощью django python ORM. Я пытаюсь сделать это следующим образом и не знаю, почему это не работает или что я делаю неправильно...

queryset.py

def ttl_expire_list(self):
        query = self.filter(is_remove=False,ttl__range=[timezone.now() + timedelta(seconds=5), timezone.now()]).order_by("-ttl")
        # query = self.filter(is_remove=False).order_by("-ttl")
        return query'

models.py

class Notification(models.Model):

    sender = models.CharField(_("Sender"), max_length=100,null=True,blank=True)

    receiver = models.CharField(_("Receiver"), max_length=100,null=True,blank=True)
    message = models.TextField(_("Message"),null=True,blank=True)

    is_read = models.BooleanField(_("Read") ,default=False,null=True,blank=True)
    ttl = models.DateTimeField(_("Time to live"),null=True,blank=True) 
    create_time = models.DateTimeField(_("Created Time"), default = timezone.now)

Решение

def ttl_expire_list(self):
        print("curen",timezone.now()) 
        print("imte :",timezone.now() + timedelta(seconds=5))
        query = self.filter(is_remove=False,ttl__range=(timezone.now() , timezone.now()+timedelta(seconds=50))).order_by("-ttl")
        return query

Первым аргументом range должна быть начальная дата, а затем конечная дата, просто поменяйте аргументы местами:

 ttl__range=[timezone.now(), timezone.now() + timedelta(seconds=5)]
Вернуться на верх