django - 自定义重组订单

标签 django django-templates django-views

我想使用自定义排序方案对 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>

产生以下输出:

School years with incorrect ordering


正如您所看到的,学年的顺序并不理想。数据在数据库中以这种方式显示:

 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语句中?

最佳答案

将 dictsort 添加到您的重新分组标记中,如下所示:{% regroupteams_at_school|dictsort:"school_year"by season.school_year as groups %} 并删除团队的 dict 排序在下面的 for 标签中。

关于django - 自定义重组订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046965/

相关文章:

django - 如何在 DeleteView 中访问相关的对象 ID

python - Django 不加载静态文件

python - Django:将整个模板封装在无空间标签中?

django - 仅更新 models.Model 中的特定字段

django - 如何从列表中的 Django 模型中获取选择字段?

java - 类似 Django 的 Java 模板系统?

python - 指向函数不工作的 Django 模型变量

python - “caching_sha2_password”插件在 Windows 上失败

database - Django 以 unicode 开头

python - 当 Django 似乎正在搜索正确的路径时如何解决 'TemplateDoesNotExist' 错误