Django ORM, отображение вложенных циклов for в шаблоне
Я создаю систему управления школой и сейчас я реализовал бэкенд для "Отсутствий" приложения ученика, но я не могу правильно отобразить его для текущего зарегистрированного ученика, потому что если модель отсутствия существует в один и тот же день более одного раза, она отображает все еще раз. Вот мой код:
models.py
> import datetime
> from django.db import models
> from django.utils.translation import gettext_lazy as _
> from accounts.models import User
>
>
> class Hour(models.Model):
> value = models.IntegerField(_('value'), unique=True)
> time_period = models.CharField(_('time period'), max_length=55, unique=True)
>
> class Meta:
> ordering = ('value',)
> verbose_name = _('hour')
> verbose_name_plural = _('hours')
>
> def __str__(self):
> return str(self.value)
>
>
> class Type(models.Model):
> name = models.CharField(_('name'), max_length=55, unique=True)
>
> class Meta:
> ordering = ('name',)
> verbose_name = _('type')
> verbose_name_plural = _('types')
>
> def __str__(self):
> return self.name
>
>
> class Absence(models.Model):
> student = models.ForeignKey(User, on_delete=models.CASCADE, related_name='student1')
> teacher = models.ForeignKey(User, on_delete=models.CASCADE, related_name='teacher1')
> hour = models.ForeignKey(Hour, on_delete=models.CASCADE)
> type = models.ForeignKey(Type, on_delete=models.CASCADE)
> day = models.DateField(_('day'), default=datetime.date.today)
> date_created = models.DateTimeField(auto_now_add=True)
> date_updated = models.DateTimeField(auto_now=True)
>
> class Meta:
> ordering = ('-day',)
> verbose_name = _('absence')
> verbose_name_plural = _('absences')
>
> def __str__(self):
> return str(self.hour)
views.py
> def index_view(request):
> absences = Absence.objects.filter(student=request.user.id)
> hours = Hour.objects.all()
>
>
> year = datetime.now().year
> month = datetime.now().month
>
> number_of_days = calendar.monthrange(year, month)[1]
>
> first_day = date(year, month, 1)
> last_day = date(year, month, number_of_days)
>
> days = []
>
> delta = last_day - first_day
>
> for i in range(delta.days + 1):
> days.append((first_day + timedelta(days=i)).strftime('%d-%m-%Y'))
>
> days.reverse()
>
> for absence in absences:
> print(absence.hour)
> for i in days:
> print(i)
>
> context = {
> 'absences': absences,
> 'days': days,
> 'hours': hours,
> }
>
> return render(request, 'absences/index.html', context)
index.html
> <table class="table">
> <thead>
> <tr>
> <th scope="col"></th>
> <th scope="col"></th>
> </tr>
> </thead>
> <tbody>
> for day in days %}
> <tr>
> <td class="w-25 align-middle">{{ day }}</td>
> <td>
> for absence in absences %}
> for hour in hours %}
> if absence.day|date:'d-m-Y' == day %}
> if absence.hour == hour %}
> <mark>n</mark>
>
> endif %}
> <mark>ob</mark>
> endif %}
> endfor %}
> endfor %}
>
> </td>
> </tr>
> endfor %}
> </tbody>
> </table>
А вот картинка, о которой я говорю: введите описание изображения здесь
Заранее благодарю за помощь. Хорошего дня.
Я пытаюсь исправить "отображение отсутствий" уже целых два дня и застрял. Буду благодарен за любую помощь.Заранее спасибо