Найти - Пользователи
Полная версия: БД сортировка. сначало кириллица а потом латиница
Начало » Django » БД сортировка. сначало кириллица а потом латиница
1
ilnur
привет

class Car(models.Model):
    name = models.CharField(...)
    ....
делаю выборку
Car.objects.filter(...).order_by('name')
Она возвращает сортированный кверисет. но сортировка сначало латиница, потом кирилица. как сделать чтобы сначала была кирилица?
БД sqlite
Sergei
вообще order_by('-name') будет сортировать в обратном порядке (минус перед именем поля),
но я не думаю, что вас это устроит - вы бы наверное хотели чтобы и кириллица и латиница при этом сами по себе были бы сортированы в естественном порядке (т.е. кириллица А->Я, а не наоборот)?
С ходу красивого решения не приходит в голову.
Навскидку - либо на лету делать анализ текстового поля, либо завести отдельное поле для сортировки, куда прописывать индекс при записи и при выборке сортировать по нему.
ilnur
да. -name мне не катит.
order('name') сортирует A-zА-я. А мне надо А-яA-z. Если стандартными средствами нельзя, то да, наверное добавлю поле. Типа ru_eng
FishHook
Вариант сделать две выборки, первую
latin="abcdef"
Car.objects.filter(name__istartswith__in=latin).order_by("name")
аналогично вторую и объединить их.
ilnur
спасибо. То что надо. А как объеденить два кверисета? Пробовал extend. Но у кверистеа вроде нет extend'a
FishHook
а кверисет - это итератор,

import itertools
x=(i for i in xrange(10) )
y=(i for i in xrange(20,30,2))
for i in itertools.chain(x,y):
    print i

по аналогии
Sergei
у вас простые кверисеты (модель одна, без экстра), так что просто qs = qs1 | qs2
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB