Django模板 - 通过Queryset循环而不创建多个时间Div

时间:2016-10-25 12:55:34

标签: python django django-templates

我除了这个问题相对容易,但由于我是Django的新手,我很挣扎。

我得到了一个给模板的QuerySet。基本上我想创建一个足球(足球)桌子。但总的来说我想理解这个概念。

因此,对于团队查询集中的每个团队,数据应填入5个相应的列中。目前我通过在每列中添加for循环来解决它。但是,我认为它看起来很丑陋而且效率低下。此外,我想编辑前三个循环的id。

所以我正在寻找:可以在div周围设置for循环但不在每个循环中创建div。

类似的东西:

{%for team in teams %}

   <div id="position">team.position</div>
   <div id="name">team.name</div>
   ...
{% endfor %}

除了添加以下内容:

{% if forloop.counter0 == 0|1|2 %}
  add id/class to div row
{% endif %}

这里有最聪明的方法,在课堂上添加一个变量,意思是class = {{xyz}}?

模板看起来像这样。

<div class="row">
            <div class="col-md-2" id="position">{% for tea in teams %}{{tea.league_position}}</br>{% endfor %}</div>
            <div class="col-md-4" id="name">{% for tea in teams %}{{tea.team_name}}</br>{% endfor %}</div>
            <div class="col-md-2" id="points">{% for tea in teams %}{{tea.league_points}}</br>{% endfor %}</div>
            <div class="col-md-2" id="goals">{% for tea in teams %}{{tea.goals_shot}}</br>{% endfor %}</div>    
            <div class="col-md-2" id="received">{% for tea in teams %}{{tea.goals_received}}</br>{% endfor %}</div>
</div>

谢谢你的帮助!!!!! 西蒙

2 个答案:

答案 0 :(得分:0)

如果您不想包含div,那么唯一可能的方法是执行ajax请求以单独填充列...

下面是未经测试的(可能是错误的),但它应该让我知道我的意思

$.get('my_get_teams_url', function(data){
    for(i = 0; i < data.teams.length; i++)
    {
        $('#position').append(data.teams[i].position);
        $('#name').append(data.teams[i].name);
    } 
});

答案 1 :(得分:0)

你正在用div构建一个表。改为使用表格。

<table>
    <tr>
        <th>Position</th>
        <th>Name</th>
        <th>Points</th>
        <th>Shots</th>
        <th>Goals against</th>
    </tr>
    {% for t in teams %}
    <tr>
        <td>{{ t.league_position }}</td>
        <td>{{ t.team_name }}</td>
        <td>{{ t.league_points }}</td>
        <td>{{ t.goals_shot }}</td>
        <td>{{ t.goals_received }}</td>
    </tr>
    {% endfor %}
</table>