Группировать по местоположению и группировать по шаблону - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь отобразить данные из БД и поместить их под правильным заголовком.

models.py

class Game(models.Model):
    location= models.ForeignKey('location', on_delete=models.CASCADE')
    group = models.IntegerField()        
    firstname = models.CharField()
    surname = models.CharField()

views.py

class group(generic.CreateView):
    template_name = 'group.html'

    def get(self, request, *args, **kwargs):
        game = Game.objects.filter(location__type__pk=kwargs['pk']).order_by('location__pk', 'group')            
        context = {
            'game': game,
        }
        return render(request, self.template_name, context)

Допустим, «группа» может быть как A, B, C и т. Д.

В шаблоне я хочу отобразить его как

Location Foo
  Group A
    Jonas Andersson
    Lisa Silverspoon
  Group B
    Sven Bohlin
    Göran Lantz

Location Bar
  Group A
    Mia Milakovic
    Lars Larsson
  Group B
    Anna Annasdotter

Я пробовал так много вариантов циклов for, но безуспешно.

Возможно ли это? Вы можете сделать это?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Встроенный тег regroup должен позволить вам сделать это, но вам нужно будет использовать его дважды, чтобы получить нужную вложенную группировку.

{% regroup game by location as games_loc %}  <!-- Group by "location" -->
{% for location, l_games in games_loc %}
    <div>{{ location }}</div>

    {% regroup l_games by group as games_grp %}  <!-- Group by "group" -->
    {% for group, g_games in games_grp %}
        <div>{{ group }}</div>

        {% for g in g_games %}  <!-- Display games in group -->
            <div>{{ g }}</div>
        {% endfor %}
    {% endfor %}
{% endfor %}
0 голосов
/ 21 января 2019

Вы можете использовать шаблонный фильтр regroup, например,

{% regroup games by location as games_list %}

{% for location, games in country_list %}
    {{ location }}
    {% for game in games %}
       {{ game.group }}
       ...
    {% endfor %}
{% endfor %}

Примечание: игры - это список, поэтому вам нужно повторить его снова.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...