Динамическое позиционирование элемента в зависимости от свойств модели в Django

В качестве личного проекта я работаю над пользовательским календарем. У меня есть Event модель, которая включает TimeFields описание того, когда событие начинается и заканчивается , которые я отредактировал, чтобы включить только соответствующие поля в этом сообщении.

class Event(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    start_date = models.DateField()
    end_date = models.DateField()
    start_time = models.TimeField(null=True, blank=True)
    end_time = models.TimeField(null=True, blank=True)
    summary = models.CharField(max_length=200, help_text="Enter summary")
    description = models.CharField(
        max_length=1000, help_text="Enter description and relevant data")

<1>> возвращает массив calendarView для каждого дня, который я итерирую для создания сетки событий.querysets

@login_required
def index(request):
    startingDate = datetime.date(2022, 11, 21)
    datesDisplayed = [startingDate +
                      datetime.timedelta(days=i) for i in range(7)]
    eventsByDate = []
    for i in range(7):
        eventsByDate += [Event.objects.filter(owner=request.user).filter(
            start_date=datesDisplayed[i]).exclude(start_time=None)]
    context = {"eventsByDate": eventsByDate,}
    return render(request, 'index.html', context=context)

Шаблон:

{% for events in eventsByDate %}
    <div class="eventsByDate">
    {% for event in events %}
        <div class="event"> 
            <b>{{ event }}</b>, {{event.timeDisplayed.0}} 
        </div>
    {% endfor %}
    </div>
{% endfor %}

Как следует из названия, я хотел бы расположить события динамически в зависимости от времени начала каждого события.

На данный момент лучший способ, который я смог придумать, это создать значение в view и передать его в template, чтобы оно было приписано к свойству top каждого события, которое я итерирую (вместе с position: absolute;), но я не смог найти синтаксис, который бы работал ни в Интернете, ни методом проб и ошибок.

Можно ли этого добиться с помощью шаблонов django? Если нет, то есть ли другой способ добиться этого?

Вернуться на верх