django模板视图嵌套列表

时间:2013-12-01 15:00:20

标签: django list templates indexing

我创建了一个嵌套列表,并从该ID开始,就像在我的模板中创建一个表

列表看起来像

ground_skills_available = [[category1, [skill1, skill2, skill3]], [category1, [skill1, skill2]]]

现在我想列出你在下面的项目,下一个类别和其他项目下面的类别。问题是,我不知道热门只显示类别,而不是类别+所有项目,因为你似乎无法使用列表的索引?

有人可以帮帮我吗?

<table>
    {% for categories in ground_skills_available %}
        {% for category in categories %}
        <tr>
            <td>{{ category }}</td>
        </tr>
            {% for skill in category %}
            <tr>
                <td>{{ skill.name }}</td>
            </tr>
            {% endfor %}
        {% endfor %}
{% endfor %}

2 个答案:

答案 0 :(得分:2)

将外圈改为

{% for category, skills in ground_skills_available %}

Django for loop docs中描述了这种技术。

在循环的第一次迭代中,这将采用列表[category1, [skill1, skill2, skill3],并分配

category = category1
skills = [skill1, skill2, skill3]

然后,您可以显示{{ category }},并循环显示skills

把它们放在一起,你有:

<table>
    {% for category, skills in ground_skills_available %}
        <tr>
            <td>{{ category }}</td>
        </tr>
        {% for skill in skills %}
        <tr>
            <td>{{ skill.name }}</td>
        </tr>
        {% endfor %}
    {% endfor %}
</table>

答案 1 :(得分:1)

{% if forloop.index == 1 %} ... some code ... {% endif %}

{% if forloop.index0 == 0 %} ... some code ... {% endif %}

期望:

{% for categories in ground_skills_available %}

    {% for category in categories %}
    {% if forloop.first %}
    <tr>
        <td>{{ category }}</td>
    </tr>
    {% else %}
        {% for skill in category %}
        <tr>
            <td>{{ skill.name }}</td>
        </tr>
        {% endfor %}
     {% endif %}
    {% endfor %}

{% endfor %}