Как перебирать строки и заполнять столбцы, используя данные из базы данных в HTML и Django

#python #html #django

#python #HTML #django

Вопрос:

У меня возникла проблема, когда данные, которые я пытаюсь ввести в таблицу, не отображаются должным образом. Я считаю, что мои запросы верны, поскольку они возвращают правильную информацию, когда я их тестирую, но когда я пытаюсь напечатать их в таблице, они выводятся неправильно.

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 — это то, что перечисляет студентов, а all class_dates — это то, что перечисляет даты в заголовке. Статус — это то, что должно быть заполнено в таблице.

Комментарии:

1. Вам нужно опубликовать свои модели и представление, которое отображает этот шаблон. Что такое all_students и class_dates ?

2. @DanielRoseman Я только что обновил ими сообщение, но список студентов — это all students , а список дат — all class_dates. Статус — это то, что должно быть заполнено в таблице.

3. Вам нужно показать определения модели класса и учащегося, плюс остальную часть этого представления. Где status используется? Что attendance в шаблоне? И почему вы используете необработанные запросы?