【发布时间】:2011-08-12 22:25:55
【问题描述】:
我想使用自定义排序方案重新排序 Django 模板中的查询集。
这是模板代码:
{% regroup teams_at_school by season.school_year as teams %}
<ul id="sport-picker">
<li class="first"><span>Sports by year</span></li>
{% for team_grouper in teams|dictsort:"season__school_year" %}
<li><span>{{ team_grouper.grouper }}<img src="http://hometeam.s3.amazonaws.com/graphics/down-pointer.png"></span>
<ul class="dropper">
{% for team_list in team_grouper.list|dictsort:"sport.sport" %}
<li><a href="{{ team_list.season.season_start_date.year }}/{{ team_list.sport.sport_slug }}/">{{ team_list.sport }} {% if team_list.total_wins > 0 or team_list.total_losses > 0 %}({{ team_list.total_wins }}-{{ team_list.total_losses }}){% endif %}</a></li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
产生这个输出:
如您所见,学年的排序并不理想。数据在数据库中以这种方式出现:
id | school_year
----+-------------
1 | 2010-2011
2 | 2009-2010
3 | 2011-2012
我想按年份重新排序结果。在 SQL 中,这会这样表达:
select * from seasons_schoolyear order by substring(school_year from 1 for 4);
结果如下:
id | school_year
----+-------------
2 | 2009-2010
1 | 2010-2011
3 | 2011-2012
有没有办法在创建查询集的语句中实现这种排序:
teams_at_school = Team.objects.filter(school=team).order_by('season__school_year')
或在模板的regroup 语句中?
【问题讨论】:
标签: django django-templates django-views