我有一種方法需要顯示一些數據,這些數據是以已排序方式從模型中創建的。我正在嘗試將有序集合傳遞給模板。這裏的方法:如何將已排序的列表(字典列表)傳遞給Django 1.6模板
def club_team_results(request, team_id):
"""Display detailed information for a specific team, including a list of results by event."""
team = Team.objects.get(pk=team_id)
team_events_list = EventDivisionTeam.objects.filter(team=team.id).order_by('division__start_date')
results={}
# Each match result is listed once, this team can be either of team or opposing_team
for r in Result.objects.filter(team=team):
results[r.id] = {'opponent': r.opposing_team.name,
'outcome': r.outcome,
'scores': r.scores,
'phase': r.phase,
'match': r.match,
'event_division_id': r.division.id,
}
for r in Result.objects.filter(opposing_team=team):
results[r.id] = {'opponent': r.team.name,
'outcome': r.outcome,
'scores': r.scores,
'phase': r.phase,
'match': r.match,
'event_division_id': r.division.id,
}
context = {'team_events_list': team_events_list, 'team_results': results, 'team': team, }
return render(request, 'rank/club_team_results.html', context)
我想傳遞按主鍵(r.id)排序的結果對象。我曾嘗試更換:
'team_results': results
與
'team_results': sorted(results.items())
在上下文指派
,但沒有數據被傳遞給模板,當我嘗試排序。請注意,我目前無法升級Django版本(今年夏天我會這樣做),所以我堅持使用1.6(目前使用Python 3.3和Django 1.6)。任何援助將不勝感激!
下面是顯示結果列表中的模板的部分:
{% for usav_code, result in team_results.items %}
{% if result.event_division_id == event.division.id %}
<tr>
<td colspan="2"> </td>
<td class="alignleft">{{ result.phase }}</td>
<td class="alignleft">{{ result.match }}</td>
<td class="alignleft">{{ result.opponent }}</td>
<td class="alignleft">{{ result.outcome }}</td>
<td class="alignleft">{{ result.scores }}</td>
</tr>
{% endif %}
{% empty %}
<tr>
<td colspan="2"> </td>
<td colspan="5">No results to display.</td>
</tr>
{% endfor %}
如果我使用排序()方法在上下文賦值語句的結果,然後在模板結果列表打空標籤並顯示「無結果顯示」。
使用sorted()時,包括添加key = lambda x:x [0]的示例,我打開列表的{%for%}迭代器上的{%empty%}標記。如果我沒有排序(),那麼列表顯示正確,但未排序。我會看看是否可以在原始帖子的代碼段中添加模板的相應部分。 –
我剛剛在Django 1.10文檔中看到1.10增加了sorted()在「列表清單」上的工作能力。這可能與我遇到的問題有關嗎?我是Django 1.6 ... –