ben*_*ben 14 python django django-queryset
为MyModel:
name = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
我尝试对查询集进行排序.我只想到这个:
obj = MyModel.objects.all().sort_by(-len(name)) #???
Run Code Online (Sandbox Code Playgroud)
任何的想法?
Jor*_*ley 21
你可能要在python中排序..
sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True)
或者我撒谎(快速谷歌搜索发现以下)
MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
Run Code Online (Sandbox Code Playgroud)
Dir*_*rom 16
新的热度(从Django 1.8开始)是Length()
from django.db.models.functions import Length
obj = MyModel.objects.all().order_by(Length('name').asc())
Run Code Online (Sandbox Code Playgroud)
您当然可以使用Python对结果进行排序sorted
,但这并不理想.相反,你可以试试这个:
MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
Run Code Online (Sandbox Code Playgroud)
您需要使用该extra
参数来传递SQL函数:
obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)'])
Run Code Online (Sandbox Code Playgroud)
请注意,这是特定于db的:MySQL使用LENGTH
,其他人可能使用LEN
.
归档时间: |
|
查看次数: |
5841 次 |
最近记录: |