Aparentemente, PostgreSQL 8.4 y Ubuntu 10.04 no pueden manejar la forma actualizada de ordenar W y V para el alfabeto sueco. Es decir, todavía ordenándoles que la misma carta como esta (antigua definición para el pedido sueco):Ordenar la lista de tuplas considerando la configuración regional (ordenamiento sueco)
- Wa
- Vb
- Wc
- Vd
que debería ser (nueva definición para el pedido sueco):
- Vb
- Vd
- Wa
- Wc
necesito pedir este correctamente para un sitio web de Python/Django que estoy construyendo. He intentado varias formas de simplemente pedir una lista de tuplas creadas a partir de un Django QuerySet utilizando * values_list *. Pero dado que es sueco, también las letras å, ä y ö deben ordenarse correctamente. Ahora tengo una u otra manera tanto no tanto ..
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
Los ejemplos da:
########## Ordering One ##############
Vb
Vd
Wa
Wc
äa
Åa
Öa
########## Ordering Two ##############
Wa
Vb
Wc
Vd
Åa
äa
Öa
Ahora, lo que quiero es una combinación de estos para que tanto V/W y una , ä, ö el pedido es correcto. Ser más preciso. Quiero Ordenando uno para respetar la configuración regional. Para entonces, usando el segundo elemento (identificación del objeto) en cada tupla, podría buscar el objeto correcto en Django.
¿Estoy empezando a dudar de que esto sea posible? ¿Sería posible actualizar PostgreSQL a una versión más nueva que maneja mejor las intercalaciones y luego usar SQL sin procesar en Django?
Creo que Postgres 8.4 y Ubuntu 10.04 LTS deberían estar bien.¿En qué configuración regional se configura su clúster? Puede decir esto con el comando "show lc_collate;" –
Debería haber mencionado que la configuración regional era correcta para el clúster (sv_SE). Tuve que cambiar esto antes para que å, ä y ö se clasifiquen correctamente. – daru