Django - Как отсортировать набор запросов по количеству символов в поле MyModel: name = models.CharField(max_length=255) Я пытаюсь сортировать запрос. Я просто думаю об этом: obj = MyModel.objects.all().sort_by(-len(name)) #??? Любая идея? Ответ 1 вам, возможно, придется сортировать это в python.. sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True) или я соврал (быстрый поиск в Google обнаружил следующее) MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length') Ответ 2 Новая горячая точка (от Django 1.8 или около того) Length() from django.db.models.functions import Length obj = MyModel.objects.all().order_by(Length(name).asc()) Ответ 3 Конечно, вы можете отсортировать результаты с помощью Python sorted, но это не идеально. Вместо этого вы можете попробовать следующее: MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length') Ответ 4 Вам нужно использовать аргумент extra для передачи функции SQL: obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)']) Обратите внимание, что это db-specific: MySQL использует LENGTH, другие могут использовать LEN.
Ответ 1 вам, возможно, придется сортировать это в python.. sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True) или я соврал (быстрый поиск в Google обнаружил следующее) MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
Ответ 2 Новая горячая точка (от Django 1.8 или около того) Length() from django.db.models.functions import Length obj = MyModel.objects.all().order_by(Length(name).asc())
Ответ 3 Конечно, вы можете отсортировать результаты с помощью Python sorted, но это не идеально. Вместо этого вы можете попробовать следующее: MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
Ответ 4 Вам нужно использовать аргумент extra для передачи функции SQL: obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)']) Обратите внимание, что это db-specific: MySQL использует LENGTH, другие могут использовать LEN.