У меня проблема с тем, что данные, которые я пытаюсь ввести в таблицу, не отображаются должным образом. Я считаю, что мои расценки верны, так как они выдают правильную информацию, когда я их проверяю, но когда я пытаюсь распечатать их в таблице, они распечатывают неправильно.
https://imgur.com/a/5u9jQW2
Я безуспешно пытался возиться с разными циклами for, разными типами HTML-тегов.
<div class="table-responsive">
<table class="table align-items-center table-flush">
<thead class="thead-light">
<tr>
<th scope="col"> Student</th>
{% for Date in class_dates %}
<th scope="col">{{Date.date}}</th>
{% endfor %}
</thead>
</tr>
<tbody>
{% for students in all_students %}
<tr>
<th scope="row">
<div class="media-body">
<a href="/student/" class="mb-0 text-sm">{{students.student_name}} </a>
</div>
</th>
<td>
{% for date in class_dates %}
{% ifequal date.dates attendance.date %}
{{students.status}}
{% endifequal %}
</td>
{% endfor %}
{% endfor %}
</tr>
</tbody>
</table>
Это только печатает даты 7 апреля снова и снова для всех других дат. Поскольку есть только два студента, кажется, что для каждого студента требуется только одно свидание. У каждой другой даты должен быть свой статус. Содержание, которое печатают запросы, является правильным.
Обновление: здесь запросы
class_dates = Class.objects.filter(course=301)
all_students = Student.objects.select_related().raw('SELECT * '
'FROM students as S, classes as CL, attendances as A '
'WHERE CL.course_id = 301 AND S.student_id = A.students '
'AND CL.course_id = A.classes AND CL.date = A.date '
'GROUP BY student_name'
)
status = Student.objects.select_related().raw('SELECT A.*'
'FROM students as S, classes as CL, attendances as A '
'WHERE CL.course_id = 301 AND CL.course_id = A.classes '
'AND CL.date = A.date '
'GROUP BY A.id'
'ORDER BY A.students'
)
all_students - то, что перечисляет студентов, и все class_dates - то, что перечисляет даты в заголовке. Статус - это то, что должно быть заполнено в таблице.