Список сортировки кортежей с учетом локали (шведский порядок)

Очевидно, PostgreSQL 8.4 и Ubuntu 10.04 не могут обрабатывать обновленный способ сортировки W и V для шведского алфавита. То есть он все еще упорядочивает их как та же буква, подобная этой (старое определение шведского порядка):

  • Wa
  • Vb
  • Wc
  • Vd

это должно быть (новое определение шведского порядка):

  • Vb
  • Vd
  • Wa
  • Wc

Мне нужно правильно заказать это для веб-сайта Python / Django, который я создаю. Я пробовал разные способы просто заказать список кортежей, созданных из Django QuerySet, используя * values_list *. Но поскольку это также шведский язык, необходимо правильно расположить буквы å, ä и ö. Теперь у меня есть либо один, либо другой способ, и оба, но не оба ..

list_of_tuples = [(u'Wa', 1), (u'Vb',2), (u'Wc',3), (u'Vd',4), (u'Öa',5), (u'äa',6), (u'Åa',7)]

print '########## Ordering One ##############'
ordered_list_one = sorted(list_of_tuples, key=lambda t: tuple(t[0].lower()))
for item in ordered_list_one:
    print item[0]

print '########## Ordering Two ##############'
locale.setlocale(locale.LC_ALL, "sv_SE.utf8")
list_of_names = [u'Wa', u'Vb', u'Wc', u'Vd', u'Öa', u'äa', u'Åa']
ordered_list_two = sorted(list_of_names, cmp=locale.strcoll)
for item in ordered_list_two:
    print item

Примеры дают:

########## Ordering One ##############
Vb
Vd
Wa
Wc
äa
Åa
Öa
########## Ordering Two ##############
Wa
Vb
Wc
Vd
Åa
äa
Öa

Теперь то, что я хочу, - это их комбинация, чтобы порядок V / W и å, ä, ö был правильным. Чтобы быть более точным. Я хочу, чтобы Ordering One учитывал языковой стандарт. Затем, используя второй элемент (идентификатор объекта) в каждом кортеж я могу ld получить правильный объект в Django.

Я начинаю сомневаться, что такое будет? Возможно ли обновление PostgreSQL до более новой версии, которая лучше обрабатывает параметры сортировки, а затем использует необработанный SQL в Django?

7
задан Daniel Vérité 6 May 2014 в 18:08
поделиться