在Django.如何使用字段长度排序

lia*_*eng -1 python django orm django-models django-orm

如何使用字段长度排序
结果如下:

Model.objects.all().order_by(len("field"))
Run Code Online (Sandbox Code Playgroud)

SQL:

 select * from table order by len(field)
Run Code Online (Sandbox Code Playgroud)

Guy*_*ush 9

在Django 1.8及以上版本中,您可以:

from django.db.models.functions import Length

obj = Model.objects.all().order_by(Length('field').asc())
Run Code Online (Sandbox Code Playgroud)

更新:对于旧版本的Django,您必须依赖纯Python实现:

sorted(Model.objects.all(), key=lambda o: len(getattr(o, 'field')))
Run Code Online (Sandbox Code Playgroud)