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>

А вот картинка, о которой я говорю: введите описание изображения здесь

Заранее благодарю за помощь. Хорошего дня.

Я пытаюсь исправить "отображение отсутствий" уже целых два дня и застрял. Буду благодарен за любую помощь.Заранее спасибо

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