Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django模板中将记录解析为html表_Django_Templates_Html Table_Crosstab - Fatal编程技术网

如何在django模板中将记录解析为html表

如何在django模板中将记录解析为html表,django,templates,html-table,crosstab,Django,Templates,Html Table,Crosstab,假设我有以下数据:(通过注释queryset) 我想在html表格上显示为交叉表: A B C John 200 100 Tom 300 100 到目前为止,我只能通过如下方式修改数据结构来实现这一点: [{'name':'John', 'games':['', 200, 100]}, {'name':'Tom', 'games':[300,'',100]}] 有没有更好的方法可以让我不用太多修改就可以使用原始数据。通常在Django中

假设我有以下数据:(通过注释queryset)

我想在html表格上显示为交叉表:

       A    B    C
John       200  100
Tom   300       100
到目前为止,我只能通过如下方式修改数据结构来实现这一点:

[{'name':'John', 'games':['', 200, 100]},
{'name':'Tom', 'games':[300,'',100]}]

有没有更好的方法可以让我不用太多修改就可以使用原始数据。

通常在Django中,理念是首先在视图中重塑数据,使模板尽可能简单(而不是在模板中使用复杂的重塑代码)

这就是说,在您的情况下,您可以通过以下方式获得更大的成功:

['A','B','C']
作为
列传递到模板上下文中

{% regroup records by name as grouped_records %}
<table>
  <thead>
    <tr>
      <th></th>
      {% for column in columns %}
      <th>{{ column }}</th>
      {% endfor %}
    </tr>
  </thead>
  <tbody>
    {% for group in grouped_records %}
    <tr>
      <td>{{ group.grouper }}</td>
      {% for column in columns %}
      <td>
        {% for record in group.list %}
          {% if record.game == column %}{{ record.score }}{% endif %}
        {% endfor %}
      </td>
      {% endfor %}
    </tr>
    {% endfor %}
  </tbody>
</table>
{%按名称将记录重新分组为分组的\u记录%}
{columns%%中的列的百分比}
{{column}}
{%endfor%}
{分组的_记录%中的组的百分比}
{{group.grouper}}
{columns%%中的列的百分比}
{group.list%中记录的%s}
{%if-record.game==列%}{{record.score}}{%endif%}
{%endfor%}
{%endfor%}
{%endfor%}

我的最终决定是重新构造数据

首先用默认值填充所有单元格:

records = []
for name in names:
    record = {}
    record['name'] = name
    # add other key if need
    record['data'] = [''] * len(games)
    records.append(record.copy())

for data in datalist:
    name = names.index(data['name'])
    game = games.index(data['game'])
    records[name][game] = data['score']
然后传递到模板:

...
{% for record in records %}
<tr>
    <td>{{ record.name }}</td>
    {% for data in record.date %}
    <td>{{ data }}</td>
    {% endfor %}
</tr>
{% endfor %}
...
。。。
{记录%中的记录的%s}
{{record.name}
{record.date%中的数据为%0}
{{data}}
{%endfor%}
{%endfor%}
...
在使用“索引”之前,我的重构代码相当长

...
{% for record in records %}
<tr>
    <td>{{ record.name }}</td>
    {% for data in record.date %}
    <td>{{ data }}</td>
    {% endfor %}
</tr>
{% endfor %}
...