Динамическое позиционирование элемента в зависимости от свойств модели в 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? Если нет, то есть ли другой способ добиться этого?