django模板变量从查询集中构建表的字段数

Posted

技术标签:

【中文标题】django模板变量从查询集中构建表的字段数【英文标题】:django template variable number of fields build of table from queryset 【发布时间】:2015-05-24 02:41:54 【问题描述】:

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

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

CI.field1
CI.field2
....

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

有没有办法做到这一点?

谢谢, 艾萨克

【问题讨论】:

相关:***.com/questions/2067006/… 和 ***.com/questions/2894365/…。 【参考方案1】:

只需使用items 再次迭代CIs

% for key,value in CIs.items %
<td> key  value</td>
%endof%

【讨论】:

抱歉,这不会打印任何内容。它没有进入循环 @isaapm 抱歉,它是CIs,而不是CI 嗨,伙计们,再靠近一点。问题是我将查询集而不是字典传递给模板。我现在在视图中使用以下语法传递一个字典:'CIs': CI_table.objects.values(*report_query_values).all()[:2] 我几乎得到它,但它没有得到像以前一样的外键值,对此有什么想法吗?【参考方案2】:

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

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

【讨论】:

谢谢,我已经从视图中得到了字段列表,所以已经涵盖了:-)【参考方案3】:

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

【讨论】:

以上是关于django模板变量从查询集中构建表的字段数的主要内容,如果未能解决你的问题,请参考以下文章

Django模板:从模型查询集对象中提取字段

Django模板中查询集中的循环内循环

Django如何在查询集中标记用户特定的对象以发送到模板?

django 模板从查询集更改了日期格式

如何从 Django 模板变量填充 jQuery Datepicker 小部件?

(如何)我可以判断我的表单字段是不是隐藏在 Django 模板中