В django. как сортировать по длине поля

Как сортировать по длине поля результаты вроде этого:

Model.objects.all().order_by(len("field"))

sql:

 select * from table order by len(field)
1
0
290
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Django 1.8 и выше вы можете:

from django.db.models.functions import Length

obj = Model.objects.all().order_by(Length('field').asc())

Обновлено: для более старых версий Django вы должны полагаться на чистую реализацию Python:

sorted(Model.objects.all(), key=lambda o: len(getattr(o, 'field')))

Другие вопросы по теме