перегруппировка django с дублированием nametuple

#python #django #templates #alphabetical

#python #django #шаблоны #алфавитный

Вопрос:

У меня есть код для перегруппировки в шаблоне django, как показано ниже:

         {% regroup clients by title.0 as clients_list %}
          {% for client in clients_list %}
            {{ client.grouper }}
              {% for item in client.list %}
                  {% if item.client_link %}
                        <a href="{{ item.client_link }}">{{ item.title }}</a> 
                  {% else %}
                        {{ item.title }}
                  {% endif %}
              {% endfor %}
          {% endfor %}
  

Иногда в моих результатах появляется дублирование nametuple для одной и той же буквы, например — ‘d’:

 GroupedResult(grouper='d', list=[<Client: decompany_1>]) GroupedResult(grouper='d', list=[<Client: decompany_2>])

  

итак, в результате у меня есть два заголовка с буквой ‘d’

Кто-нибудь знает, как этого избежать?

редактировать views.py

 class ClientsListView(ListView):
    model = Client
    template_name = 'clients/clients_list.html'
    context_object_name = 'clients'
  

Комментарии:

1. Я предполагаю, что эти группы не находятся сразу друг за другом? Входные данные должны быть упорядочены по условию группировки, поскольку перегруппировка Django работает как groupby of itertools , она ищет «пакеты» с той же группой.

2. Итак, другими словами, здесь ваша clients должна быть упорядочена по .0 части, хотя, скорее всего, в представлении вы можете сделать это в запросе. Можете ли вы поделиться (соответствующими частями) представлением?

3. @WillemVanOnsem пожалуйста, проверьте мою правку, на мой взгляд, там нет ничего особенного, и, возможно, это причина сбоя….

4. Что, если использовать Client.objects.order_by('title') как QuerySet ?

5. @WillemVanOnsem с Client.objects.order_by('title') — ничего не изменилось