Я новичок в Django и в настоящее время работаю над системой управления школой, особенно над модулем посещаемости. В этом модуле после ежедневного посещения учителей по перекличке их статус в таблице TeachersAttedance изменяется на «Присутствует», «Поздно» или «Отсутствует».
Я могу представить статус посещаемости учителя за день в таблице TeachersAttedance в модель. Теперь проблема заключается в том, как извлечь эти данные и отобразить их в табличном формате с учетом дней месяца в качестве заголовка в таблице.
По сути, я хочу, чтобы в зависимости от дня посещаемость учителей в таблице в каком месяце пользователь выбирает. В настоящее время у меня проблема с поиском решения этой проблемы.
вот мои views.py
def teacher_attendance_report(request):
context = {}
form = TeacherAttendanceForm(request.POST)
if request.method == 'POST':
if request.POST.get('group_by'):
grab_data_passed = request.POST.get('group_by')
#create caledar with days of the grabbed month
z=0
range=32
days=[]
if z< range:
dats = TeacherAttendance.objects.filter(date__month=grab_data_passed)[z].date
z+=1
y=dats.month
x=dats.year
cal = calendar.TextCalendar(calendar.WEDNESDAY)
for day in cal.itermonthdays(x, y):
days.append(day)
context['days']=days
teacher = User.objects.filter(is_teacher=True)
get_attendance=TeacherAttendance.objects.filter(date__month=grab_data_passed)
context['get_attendance']=get_attendance
context['teachers'] = teacher
return render(request, 'Reports/teacher_attendance_report_details.html', context)
context={'form':form}
return render(request, 'Reports/teacher_attendance_report_index.html', context)
вот таблица посещаемости учителя, которую я использую , models.py
class TeacherAttendance(models.Model):
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, blank=False, null=True)
date = models.DateField()
status = models.CharField(max_length=50, choices=ATTENDANCE)
objects = models.Manager()
class Meta:
default_permissions = ('view', 'add', 'change', 'delete')
ordering = ["date", ]
get_latest_by = "date"
и вот как я реализую шаблон посещаемость. html
<table id="datatable-responsive"
class="datatable-responsive table table-striped table-bordered dt-responsive nowrap" cellspacing="0" width="100%">
<thead>
<tr>
<th>Teacher <i class="fa fa-long-arrow-down" z></i> - Date <i class="fa fa-long-arrow-right"></i></th>
{% for day in days%}{% if day > 0%}<th>{{day}}</th> {% endif %}
{%endfor%}
</tr>
</thead>
<tbody>
{% for teacher in teachers %}
<tr>
<td>{{ teacher }}</td>
{% for details in get_attendance %}
{% for day in days %}
{% if day == details.date.day %}
<td>{{ details.status }}</td>
{% else %}
<td>--</td>
{% endif %}
{%endfor%}
{%endfor%}
</tr>
{%endfor%}
</tbody>
</table>
I ' В настоящее время я получаю таблицу с только статусами, которые не соответствуют статусу посещаемости каждого учителя. Другая проблема заключается в том, что столбцов значений больше, чем дней (отмечены красным на изображении).
Любые советы действительно приветствуются, спасибо вам большое. 