170 похожих чатов

Господа, прошу помощи! Пишу сайт на django: Есть 1500 строк в базе Задача:

вывести их на фронтэнд в алфавитном порядке так:

А
Абакан
Альметьевск
Астрахань
Б
Батайск
Белгород
Бийск
...

Текущий код views.py циклом for обходит названия городов и, если первая буква города есть в алфавите, - добавляет букву в новый алфавит:

for city in cities:
if city[0] in alphabet:
my_alphabet.append(city[0])
my_alphabet = sorted(list(set(my_alphabet)))

Далее передаю новый алфавит и названия городов в шаблон html:

{% for letter in my_alphabet %}
<span>{{ letter }}</span>
{% for city in cities %}
{% if city.0 == letter %}
<span>{{ city }}</span>
{% endif %}
{% endfor %}
{% endfor %}

Загрузка страницы занимает до 10 сек

Может, есть у кого вариант попроще?

2 ответов

6 просмотров

сделай ордер сразу в базе

P.-Svt Автор вопроса

The built-in template tag regroup can be used to loop through a list/queryset and group by a common attribute. from django.db.models.functions import Substr cities= City.objects.order_by('name').annotate( first_letter=Substr('name', 1, 1) ) The above queryset gives all City instances annotated with the first letter of the name field. You can then use this in the regroup tag {% regroup cities by first_letter as letters %} {% for letter in letters %} <span>{{ letter.grouper }}</span> {% for city in letter.list %} <span>{{ city.name }}</span> {% endfor %} {% endfor %}

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта