django 模板可变字段数 table 来自查询集

django template variable number of fields build of table from queryset

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

<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 是包含所有字段的列表,CIs 是包含需要进入 table 的数据的查询集。 问题是我通常知道字段的名称,因此在以通常方式创建单元格时我可以单独调用每个字段:

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

但现在我无法对字段名称进行硬编码,因为它们是可变的并且来自列表。

有办法吗?

谢谢, 艾萨克

只需使用 items

再次遍历 CIs
{% for key,value in CIs.items %}
<td>{{ key }} {{value}}</td>
{%endof%}

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

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

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