为MyModel:Django的 - 如何在一个字段排序查询集由字符数
name = models.CharField(max_length=255)
我尝试排序的查询集。我只是想想:
obj = MyModel.objects.all().sort_by(-len(name)) #???
有什么想法吗?
为MyModel:Django的 - 如何在一个字段排序查询集由字符数
name = models.CharField(max_length=255)
我尝试排序的查询集。我只是想想:
obj = MyModel.objects.all().sort_by(-len(name)) #???
有什么想法吗?
您可能需要进行排序,在蟒蛇..
sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True)
或词不达意(A快速谷歌搜索发现以下)
MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
你当然也可以排序的结果使用Python的sorted
,但这并不理想。相反,你可以试试这个:
MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
你需要使用extra
参数传递一个SQL函数:
obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)'])
注意,这是DB-具体:MySQL使用LENGTH
,其他人可能使用LEN
。
新的辣味(如Django的1.8左右)是Length()
from django.db.models.functions import Length
obj = MyModel.objects.all().order_by(Length(name).asc())
笑你穆斯塔从同谷歌线程我发现有这个:P –