Django template dictsort не упорядочивается правильно при использовании испанского языка
В настоящее время у меня есть диктант страны
Мой вид класса выглядит так
class SubmitView(TemplateView):
def get(self, request):
context = {}
form = AddDefenitionForm()
context['countries'] = COUNTRIES
context['form'] = form
return render(request, "submit.html", context)
А мой submit.html выглядит так
{% for p in countries.countries|dictsort:"name_es" %}
<option value="{{ p.code|lower }}">{{ p.name_es }}</option>
{% endfor %}
По какой-то причине в этом словаре слово México появляется в конце буквы M.
В соответствии с комментарием Ene Paul, вы можете добавить name_normalized
ключ/значение к вашему словарю.
Я не могу опубликовать полное решение для словаря, но вы можете сделать это самостоятельно просто с помощью функции strip_accents.
for d in COUNTRIES['countries']:
d['name_normalized'] = strip_accents(d['name_es'])
Затем используйте онлайн-форматер Python для вывода (необязательно). Вставьте поверх существующего списка стран.
Затем в шаблоне:
<select name="countries" id="countries">
{% for p in countries.countries|dictsort:"name_normalized" %}
<option value="{{ p.code|lower }}">{{ p.name_es }}</option>
{% endfor %}
</select>
(также удалите лишний пробел перед словами "Санто Томе и Принсипи")