我想使用自定义排序方案重新排列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
声明中?
谢谢您的建议。但是,'school_year'是Season模型中的一个字段,它与Team模型作为外键相关联。有没有办法使用'.extra()'与外键? –
我刚更新了我的回复。 – Hassek