Как вывести посещаемость всех сотрудников за месяц, если посещаемость ежедневная в 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>
и на выходе я получаю следующее
Здесь посещаемость сотрудников отображается по строкам и повторяется снова и снова, потому что посещаемость вставляется каждый день. но я хочу отобразить посещаемость в виде картинки, которой я поделился с вами. Пожалуйста, подскажите, как сделать запрос, чтобы получить желаемый результат.