django模板变量从queryset构建表的字段数

时间:2015-03-20 15:55:18

标签: django django-templates

我正在尝试基于可变数量的字段在模板中构建表。 我正在使用的代码是:

<table id="custom_report_table" class="display" width="100%">
          <thead>
            {% for field in fields %}
                <th>{{ field }}</th>
            {% endfor %}
          </thead>
          <tdody>
            {% for CI in CIs %}
              <tr>
                  <td>{{ CI }}</td>
              </tr>
            {% endfor %}
           </tdody>
        </table>

fields是包含所有字段的列表,CI是一个查询集,其中包含需要进入表的数据。 问题是我通常知道字段的名称,所以我可以在通常的方式创建单元格时单独调用每个字段:

{{CI.field1}}
{{CI.field2}}
....

但是现在我不能硬编码字段的名称,因为它们是可变的并且来自列表。

有办法做到这一点吗?

谢谢, 艾萨克

3 个答案:

答案 0 :(得分:0)

使用CIs

再次对items进行迭代
{% for key,value in CIs.items %}
<td>{{ key }} {{value}}</td>
{%endof%}

答案 1 :(得分:0)

如果您只想打印fields中的项目:

{% for field_name, field_value in CIs.items %}
  {% if field_name in fields %}
    <th>{{ field_name }}</th>
    <td>{{ field_value }}</td>
  {% endif %}
{%endof%}

答案 2 :(得分:0)

通过在视图中创建查询集中使用.values来解决。 为了引用每个字段的外键,我必须使用field_name_foreign_field列表构建值列表。 由于所有外键字段的名称都遵循标准规则,因此在视图中使用for循环非常容易。