カスタム注文方式を使用して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
結果を年に並べ替えたいと思います。
teams_at_school = Team.objects.filter(school=team).order_by('season__school_year')
:
id | school_year
----+-------------
2 | 2009-2010
1 | 2010-2011
3 | 2011-2012
クエリセットを作成する文の中で、この順序のいずれかを達成する方法はあります:次のような結果と
select * from seasons_schoolyear order by substring(school_year from 1 for 4);
:SQLでは、これはこのように表現されるだろう
またはテンプレートのregroup
声明では?
ご提案をいただき、ありがとうございます。しかし、 'school_year'はSeasonモデルのフィールドで、チームモデルと外部キーとして関連付けられています。外部キーに '.extra()'を使用する方法はありますか? –
私はちょうど私の応答を更新しました。 – Hassek