我想使用自定義排序方案重新排列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