Django的基于填充键的填充表列

时间:2018-06-19 13:51:45

标签: django django-templates

我有以下格式的字典:

{
  'P1': {'A': [1,10], 'B': [4,5], 'C': [8,12]},
  'P2': {'A': [1,10], 'E': [4,5], 'G': [8,12]},
  'P3': {'C': [1,10], 'D': [4,5], 'J': [8,12]}
}

和这样的HTML表设置:

<table>
  <thead>
    <tr>
      <th></th>
    </tr>
    <tr>
      <th>A</th>
      <th>B</th>
      <th>C</th>
      <th>D</th>
      <th>E</th>
      <th>F</th>
      <th>G</th>
      <th>H</th>
      <th>I</th>
      <th>J</th>
    </tr>
  </thead>
.
.
.

我想做的是在正确的“单元格”上输出P的字母,基本上数据应该以正确的字母输入,如下所示:

Player | A | B | C | D | E | F | G | H | I | J |
P1     | 1 | 4 | 8 |   |   |   |   |   |   |   |
P2     | 1 |   |   |   | 4 |   | 8 |   |   |   |
P3     |   |   | 1 | 4 |   |   |   |   |   | 8 |

我尝试过但是失败了:

{% for k,v in p_dataset.items %}
  <tr>
    <td>{{k}}</td>
    {% for letter, vals in v.items %}
      <td>{% if letter == 'A' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'B' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'C' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'D' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'E' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'F' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'G' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'H' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'I' %}{{vals}}{% endif %}</td>
      <td>{% if letter == 'J' %}{{vals}}{% endif %}</td>
    {% endfor %}
  </tr>
{% endfor %}

但是我得到的很多东西都超过了tds,我应该怎么做?

编辑:考虑一下,也许我可以将所有子项添加为空并在视图上更新它们,但是还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

感谢Chiefir的想法,我最终像这样解决了它:

{% for k,v in p_dataset.items %}
<tr>
    <td>{{k}}</td>
    <td>{% if v.A %}{{v.A|join:' '}}%{% endif %}</td>
    <td>{% if v.B %}{{v.B|join:' '}}%{% endif %}</td>
    <td>{% if v.C %}{{v.C|join:' '}}%{% endif %}</td>
    <td>{% if v.D %}{{v.D|join:' '}}%{% endif %}</td>
    <td>{% if v.E %}{{v.E|join:' '}}%{% endif %}</td>
    <td>{% if v.F %}{{v.F|join:' '}}%{% endif %}</td>
    <td>{% if v.G %}{{v.G|join:' '}}%{% endif %}</td>
    <td>{% if v.H %}{{v.H|join:' '}}%{% endif %}</td>
    <td>{% if v.I %}{{v.I|join:' '}}%{% endif %}</td>
    <td>{% if v.J %}{{v.J|join:' '}}%{% endif %}</td>
</tr>
{% endfor%}