2012-10-09 9 views

Trả lời

15

bạn có thể phải sắp xếp rằng trong python ..

sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True)

hoặc tôi nói dối (A tìm kiếm google nhanh chóng tìm thấy những điều sau)

MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length') 
7

Bạn có thể dĩ nhiên loại kết quả sử dụng Python của sorted, nhưng đó không phải là lý tưởng. Thay vào đó, bạn có thể thử này:

MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length') 
+1

lol bạn Musta nhận này từ thread google cùng tôi tìm thấy: P –

4

Bạn sẽ cần phải sử dụng đối số extra để vượt qua một chức năng SQL:

obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)']) 

Lưu ý rằng đây là db cụ thể: MySQL sử dụng LENGTH, người khác có thể sử dụng LEN.

9

Các nóng mới (như của Django 1,8 hoặc lâu hơn) là Length()

from django.db.models.functions import Length 
obj = MyModel.objects.all().order_by(Length(name).asc())