Model1(models.Model):
name = models.CharField(max_length=30)
Model2(models.Model):
model1 = models.ManyToManyField(FontClass)
res = Model1.objects.all().filter(....).order_by('model1__name....???')
Как можно сортировать результат по более сложному состоянию? model1__name
имеет символ подчеркивания на своем имени? Например, Model1.objects.all().filter(....)
возвращает следующие имена:Сортировка по сложному состоянию
aaa_bbb
aaaccc
aaa_ttt
aaa_ddd
ggggg
yyy_cccc
zzz_kkk
dddd
После сортировки должно быть:
aaa_bbb
zzz_kkk
aaa_ddd
aaa_ttt
yyy_cccc
aaaccc
ggggg
dddd
Первых тем, с подчеркиванием в их именах, а затем - без него.
Обратите внимание, что условие является всего лишь примером того, что я хочу сортировать даже сложные, я просто хочу получить, как это сделать.
Вы можете разбить результаты на два списка, а затем отсортировать их по алфавиту. – rnevius
Возможный дубликат [Пользовательский заказ в Django] (http://stackoverflow.com/questions/883575/custom-ordering-in-django) – Wtower
'Queryset.order_by()' зависит от заказа базы данных, IOW он просто добавляет SQL 'order by'. Таким образом, вы можете либо попытаться настроить свою базу данных, чтобы получить желаемый порядок, либо (если ваш типичный набор данных не слишком велик) идут на чистую сортировку python, но это может быть менее эффективным. –