Как вывести посещаемость всех сотрудников за месяц, если посещаемость ежедневная в django

У меня есть модель с именем Attendance. Я храню посещаемость всех сотрудников за месяц на ежедневной основе. Теперь я хочу вывести посещаемость сотрудника в шаблоне в формате EmpId имя 1 2 3 4 5 ........................... 29 30 31. Например 2354 rajiv P P P A P P P A P P P .................................. P P A.

Первый взгляд на модель

class Attendence(models.Model):
    EmpId = models.IntegerField(verbose_name='EmpId')
    Name = models.CharField(max_length=50,verbose_name='Name')
    Site = models.CharField(max_length=50,verbose_name='Site')
    Days = models.DecimalField(max_digits=10,decimal_places=2,verbose_name='Days')
    Nh = models.IntegerField(verbose_name='Nh')
    SingleOt = 
    models.DecimalField(max_digits=10,decimal_places=2,verbose_name='SingleOt',null=True)
    DoubleOt = 
    models.DecimalField(max_digits=10,decimal_places=2,verbose_name='DobleOt',null=True)
    choices = [('P','Present'),('A','Absent'),('O','Off')]
    Status = models.CharField(choices=choices,blank = 
    False,max_length=10,verbose_name='Status')
    AttendenceOn = models.DateField(default = timezone.now)

    def __str__(self):
       return 
      '{EmpId}/{Name}/{date}'.format(EmpId=self.EmpId,Name=self.Name,date=self.AttendenceOn)

Для получения соответствующего результата я попробовал следующий код в функции attendRegister в view.py

def attendRegister(request):
    attendencelist = {}
    employee = []
    if request.method == 'POST':
        datefrom = request.POST['DateFrom']
        dateto = request.POST['DateTo']
        attendencelist = Attendence.objects.filter(AttendenceOn__range=[datefrom,dateto],Site 
        = str(request.user.SuperVisor.Site)).order_by('Name')

    Date__range = 
    [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
    context = {
            "attendencelist":attendencelist,
            "date":timezone.now(),
            "range":Date__range,
            }
    return render(request,"attendRegister.html",context)

В шаблоне я попробовал следующий процесс

     <div class="row">
      <div class="col-sm-12">
        <table class="table table-striped table-hover">
                    <thead>
                        <tr class="bg-primary" style="color:white; font-size: 0.5rem;">
                            <th>id</th>
                            <th>Name</th>
                            {% for i in range%}
                            <th>{{forloop.counter}}</th>
                            {% endfor %}
                        
                    </thead>
                    <tbody>
                        {%for attendence in attendencelist%}
                        <tr > 
                        
                            <td>{{attendence.EmpId}}</td>
                            <td>{{attendence.Name}}</td>
                            {% if attendence.Status == 'P' %}                      
                            <td style="background-color:green; color:white;">P</td>
                            {% elif attendence.Status == 'A' %}
                            <td style="background-color:red; color:white;">A</td>
                            {% elif attendence.Status == 'O' %} 
                            <td style="background-color:blue; color:white;">O</td>
                            {% endif %}

                                          
                        </tr>
                        {% endfor %}    
                           
                </tbody>
            </table>
    
    </div>
 </div> 

и на выходе я получаю следующее

enter image description here

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

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