две петли в одной строке таблицы - PullRequest
1 голос
/ 14 октября 2019
<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>

\ views

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)

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Несколько проблем с вашей разметкой:

  • должно быть столько элементов 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>
0 голосов
/ 14 октября 2019

Добавление related_name='+' означает, что вы не сможете использовать обратную связь со своей моделью, что, безусловно, не то, что вы хотите.

Если вы удалите все related_name='+' в своих моделях, заполнение шаблона станет намного проще:

views.py:

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

Теперь в вашем шаблоне:

<table>
<th id="703183278R34" style="height: 19px;" class="row-headers-background">
<div class="row-header-wrapper" style="line-height: 19px;">35</div>
</th>
{% for teacher in teachers %}

<tr style="height:19px;"> 
<td class="s46"></td>
<td class="s51" colspan="3">{{teacher.Subjects}}</td>
<td class="s51" colspan="4">{{teacher.Employee_Users}}</td>
<td class="s51" colspan="6">
  {% for room in teacher.Subject_Section_Teacher_set.all %}
  {{room.Classroom}}-{{room.Day_Name}}
  {% endfor %}
</td>
</tr>
{% endfor %}

</table>

См. ответ Рисадиньи , где объясняется, почему ваш цикл for не работал вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...