我尝试在html模板中使用for循环来创建表格,但他总是在表格外添加此列的问题,如此图片
我不知道他为什么直接直接从桌子上走出去(如果只有一个对象就可以了,但是当ligne中有多个对象时会发生这种情况)
我该怎么办?
谢谢
html模板
<tr class="col-2">
<th>JOUR</th>
<th>8-10</th>
<th>10-12</th>
<th>12-14</th>
<th>14-16</th>
<th>16-18</th>
</tr>
<tr class="col-2">
<td>SAMEDI</td>
{% for ins in ob %}
{% if ins.jour = 'S' %}
{% if ins.heur = '1' and ins.jour = 'S' %} <td>{{ins}}</td> {% else %} <td> </td> {% endif %}
{% if ins.heur = '2' and ins.jour = 'S' %} <td>{{ins}}</td>{% else %} <td> </td> {% endif %}
{% if ins.heur = '3' and ins.jour = 'S' %} <td>{{ins}}</td>{% else %} <td> </td> {% endif %}
{% if ins.heur = '4' and ins.jour = 'S' %} <td>{{ins}}</td>{% else %} <td> </td> {% endif %}
{% if ins.heur = '5' and ins.jour = 'S' %} <td>{{ins}}</td>{% else %} <td> </td> {% endif %}
{% endif %}
{% endfor %}
{% if a != 2 %}
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
{% endif %}
</tr>
views.py
def tempss(request):
ob=temps.objects.all()
a=1
b=1
c=1
d=1
e=1
f=1
for ins in ob:
if ins.jour=='S':
a=2
elif ins.jour=='D':
b=2
model.py
class temps(models.Model):
JOUR_CHOICES = (
('S', 'Samedi'),
('D', 'Dimanche'),
('L', 'Lundi'),
('M', 'Mardi'),
('R', 'Mercredi'),
('J', 'Jeudi'),
('V', 'Vendredi'),
)
HEUR_CHOICES = (
('1', '8-10'),
('2', '10-12'),
('3', '12-14'),
('4', '14-16'),
('5', '16-18'),
)
jour = models.CharField(max_length=1, choices=JOUR_CHOICES)
heur = models.CharField(max_length=1,choices=HEUR_CHOICES)
salle=models.ForeignKey(salle,on_delete=models.CASCADE)
groupe=models.ForeignKey(groupe,on_delete=models.CASCADE,limit_choices_to={'any_field':False},)
答案 0 :(得分:0)
您的循环
{% for ins in ob %}
将为每个不满足您定义条件的对象呈现一个空表数据标签。
这部分是多余的,因为您已经封装了相同的条件:
and ins.jour = 'S' %}
但是,当您要创建表(具有固定数量的行和单元格)并将条件放入单元格中时,AND更为有意义-我确定有一个更优雅的解决方案,但有鉴于此和模型,这就是我想出的:
<td>{% for ins in obj %}{% if ins.jour = 'S' and ins.heur = '1' %}{{ins}}
{% endif %}{% endfor %}</td>
对其余的时隙进行相应的重复。 也许考虑在视图而不是模板中构造表值。