比较模板中的多个forloop.counter值

时间:2019-04-13 22:22:10

标签: python django jinja2

我有一个家庭作业,希望我们创建一个成绩簿表,该表将保留输入的相同值,然后再单击“提交”,但我很难将这些值设置为保持不变,但是我确实有“分配”,所以我知道可以做到,但是我只是一个带有django模板的菜鸟。

我尝试过多次执行render方法并循环浏览此得分列表,但显然多次进行表格绘制存在其自身的问题,现在我正在尝试遍历学生,作业和成绩列表(以一种非常低效的方式)在Django模板中,但是要获得预期的结果,我将必须具有3个嵌套循环,并且仅在两个外部循环的索引与内部循环的某些约束匹配时才创建表的单元格(请参见下面的代码。

VIEWS.PY

scores = list(models.Grade.objects.all().values_list('score', flat=True))
students = list(models.Student.objects.all().values_list('id', flat=True))
items = list(models.Item.objects.all().values_list('item_name', flat=True))
return render(request, 'main/index.html', {"row": students, "col": items, = "scores": scores})

INDEX.HTML:

{% for i in row %}
      <tr><th>{{i}}</th>
      {% for j in col %}
          {%  for k in scores %}
              {% if forloop.counter == ((forloop.parentloop.counter + 1) * (forloop.parentloop.parentloop.counter + 1) - 1 %}
                <td><input name="{{i}}_{{j}}" type="number" value="{{ k }}"/></td>
              {% endif %}
          {% endfor %}
      {% endfor %}
      </tr>
{% endfor %}

预期结果最终将以与上次输入的值相同或与成绩表中相同的单元格值呈现表,但问题是在if循环中它抛出错误,提示“期望的ID或文字”,它似乎来自修改**loop.counter的值。

1 个答案:

答案 0 :(得分:0)

Is the assignment to work with jinja syntax?

I’d recommend implementing this logic in a separate python def and then just passing in exactly what you need to render with a single for loop. Keep the templating as simple as possible.