首页 > 解决方案 > 1 个表格行中有两个 forloop

问题描述

<table>
{% for sensie in teacher %}

<tr style='height:19px;'>
<th id="703183278R34" style="height: 19px;" class="row-headers-background">
<div class="row-header-wrapper" style="line-height: 19px;">35</div>
</th>

<td class="s46"></td>
<td class="s51" colspan="3">{{sensie.Subjects}}</td>
<td class="s51" colspan="4">{{sensie.Employee_Users}}</td>
{% endfor %}
{% for room in roomsched %}
<td class="s51" colspan="6">{{room.Classroom}}-{{room.Day_Name}}</td>
</tr>
{% endfor %}
</table>

\视图

teacher = SubjectSectionTeacher.objects.filter(Education_Levels__in=studentenroll.values_list('Education_Levels'))
      roomsched = SubjectRoomSchedule.objects.filter(Subject_Section_Teacher__in=teacher)
return render(request, 'Homepage/enrollmentrecords.html',{,"teacher":teacher,"roomsched":roomsched})

我如何使它在表格行中正确格式化,就像在下面显示的示例中一样。请帮我....

Subject            Teacher                Room
math             teachername             room512

这是我的模型,

class SubjectRoomSchedule(models.Model):
    Subject_Section_Teacher = models.ForeignKey(SubjectSectionTeacher, related_name='+', on_delete=models.CASCADE,null=True)
    Classroom =models.ForeignKey(Room, related_name='+', on_delete=models.CASCADE,null=True)

class SubjectSectionTeacher(models.Model):
    School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE,null=True)
    Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,blank=True)
    Courses= models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE,null=True,blank=True)
    Sections= models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE,null=True)
    Subjects= models.ForeignKey(Subject, related_name='+', on_delete=models.CASCADE,null=True)
    Employee_Users= models.ForeignKey(EmployeeUser, related_name='+', on_delete=models.CASCADE,null=True)

标签: django

解决方案


您的标记存在几个问题:

  • 元素的数量必须与th列的数量一样多(多达td
  • 表头(th元素)当然在循环之外 - 表头只显示一次
  • 因此,您必须遍历行tr,并且它的所有子元素都在循环中,其余的必须在外面
  • 您不应该通过内部循环将单元格动态添加到行中,因为这些行可能包含不同数量的列数 - 因此我更改了您的代码以将房间附加到逗号分隔的列表中。
    <table>
      <tr>
        <th></th>
        <th>Subject</th>
        <th>Teacher</th>
        <th>Rooms</th>
      </tr>
    {% for sensie in teacher %}
      <tr style='height:19px;'>        
        <td class="s46"></td>
        <td class="s51" colspan="3">{{sensie.Subjects}}</td>
        <td class="s51" colspan="4">{{sensie.Employee_Users}}</td>
        <td class="s51" colspan="6">
        {% for room in roomsched %}
            {{room.Classroom}}-{{room.Day_Name}}{% if not forloop.last %},{% endif %}
        {% endfor %}
        </td>
      </tr>
    {% endfor %}
    </table>

推荐阅读