Очевидно, что PostgreSQL 8.4 и Ubuntu 10.04 не могут обработать обновленный способ сортировки W и V для шведского алфавита. То есть он все еще упорядочивает их как одну и ту же букву (старое определение для шведского упорядочения):
должно быть (новое определение для шведского заказа):
Мне нужно правильно заказать это для сайта 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 уважал язык. Затем, используя второй элемент (идентификатор объекта) в каждом кортеже, я мог получить правильный объект в Django.
Я начинаю сомневаться, что это будет возможно? Возможно ли будет обновить PostgreSQL до более новой версии, которая лучше обрабатывает параметры сортировки, а затем использовать сырой SQL в Django?