Фильтрация поля DateTimeField по прошлым и будущим датам django

Моя проблема в том, что я делаю таймер до следующего события на сайте. События я храню в модели django. Делаю вывод даты в шаблоне, не знаю как сделать вывод событий по очереди. У меня получилось отфильтровать прошедшие даты в шаблоне, но я не могу сделать автоматическую смену события, когда прошло предыдущее событие. То есть до него осталось 00.00.00. Также я не могу вывести первый уже отфильтрованный элемент. Работает только {%if forloop.counter0 == 1%}, но это выводит элемент всего списка, а не элемент отфильтрованного списка. Я просто пытался вывести первое событие, в котором дата больше текущей. Я пытался использовать некоторые внутренние циклы после фильтрации, но у меня не получается. Я обращаюсь к вам с этой проблемой, потому что зашел в большой тупик. Буду очень благодарен за помощь. Была идея фильтровать события сразу в views.py с помощью filter, но я опять запутался. Я еще новичок в этом деле, но мне бы очень хотелось закончить этот проект.

Шаблон

Views.py

from django.shortcuts import render, redirect
from .models import Main_Image, Event
from datetime import date

def index(request):
    image = Main_Image.objects.all()
    date = Event.objects.all()
    content = {'image': image, "date": date}
    return render(request, 'Главная/Главная.html', content)

Models.py

from django.db import models
import os

class Event(models.Model):
    namedate = models.CharField(max_length=120)
    date = models.DateTimeField()

    def __str__(self):
        return self.namedate

Моя проблема все-таки была решена. Этот код помог мне:

Views.py

from datetime import datetime, timedelta

def index(request):
    startdate = datetime.today()
    enddate = startdate + timedelta(days=365)
    date = Event.objects.filter(date__range=[startdate, enddate])

    content = {"date": date}
    return render(request, 'Главная/Главная.html', content)

шаблон и JS

{% if forloop.counter0 == 0 %}

...

if (days < "0" ) {
  location.reload(); return false;
}
Вернуться на верх