Простой order_by
в ORM в сочетании со встроенным тегом шаблона regroup
сделает именно то, что вы ищете. Пример в Django документах для regroup
- это почти то, что вы пытаетесь сделать.
Я предполагаю, что ваша Score
модель имеет ForeignKey
для Group
модель.
По вашему мнению, вы бы сделали что-то вроде этого:
# views.py
class ScoreListView(ListView):
model = Score
queryset = Score.objects.select_related('game') \
.order_by('game__name', '-score')
# score_list.html
<!-- other content -->
{% regroup scores by game as game_list %}
{% for game, game_scores in game_list %}
<h2>{{ game }}</h2>
<ul>
{% for score in game_scores %}
<li>{{ score.score }}</li>
{% endfor %}
</ul>
{% endfor %}