在django中向列标题添加默认值

时间:2012-03-09 03:29:29

标签: django django-templates

我有一个脚本可以从其他网站导入表格中的数据。这些表的宽度在5到15列之间,任意长。

在获得原始数据后,我希望有机会确保我对列标题的猜测是正确的。所以我希望在顶部有一个列可以调用列的15个内容。这样我就可以快速纠正自动代码做出的任何糟糕决定。

因此,自动代码生成2个数组,第一个字符串:
possible_headers = [“one”,“two”,“three”......]
第二个索引到第一个数组中 possible_headers = [2,0,5 ...]
(列标题为“三”,然后是“一”,然后是“六”)

在我的模板中使用它们:

{% for likely_head in likely_headers %}
<th>

  <select name="colHeader">
  {% for poss_head in possible_headers %}

    {% if forloop.counter0 == likely_headers.forloop.parentloop.counter0 %}
      <option value="Col:{{forloop.counter0}}" selected>{{poss_head}}</option>
    {% else %}
      <option value="Col:{{forloop.counter0}}">{{poss_head}}</option>
    {% endif %}

  {% endfor %}
</select>

</th>

{% endfor %}

认为可能的标题将是选择输入中的选定/默认项目。问题是:

likely_headers.forloop.parentloop.counter0

不评估。 forloop.parentloop.counter0正常工作,但显然它不能用作列表的索引。

我是django的新手,所以我可能做错了,请你好!

2 个答案:

答案 0 :(得分:0)

根据文档https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

,如果你应该使用likely_headers.forloop.parentloop.counter0,我不明白为什么你会使用forloop.parentloop.counter0

您也可以尝试通过使用{% with %}标记

封装计数器来解决此问题
{% for likely_head in likely_headers %}
  {% with forloop.counter0 as parent_counter %}
    {% for poss_head in possible_headers %}
       {{ parent_counter }}
    {% endfor %}
  {% endwith %}
{% endfor %}

我没有检查过它确实有效,但我认为应该。

此外,您可能正在尝试解决模板中无法解决的问题。您可以尝试使用标记,在视图中处理标题(使用库?)并返回应该呈现的标题列表。

答案 1 :(得分:0)

我认为我拥有的整数列表实际上是字符串[“1”,“5”,“3”]的列表,因此它们无法与for循环迭代器进行比较。创建一个真实的整体列表解决了这个问题。