#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
ofitertools
, она ищет «пакеты» с той же группой.2. Итак, другими словами, здесь ваша
clients
должна быть упорядочена по.0
части, хотя, скорее всего, в представлении вы можете сделать это в запросе. Можете ли вы поделиться (соответствующими частями) представлением?3. @WillemVanOnsem пожалуйста, проверьте мою правку, на мой взгляд, там нет ничего особенного, и, возможно, это причина сбоя….
4. Что, если использовать
Client.objects.order_by('title')
какQuerySet
?5. @WillemVanOnsem с
Client.objects.order_by('title')
— ничего не изменилось