[英]Django - How to sort queryset by number of character in a field
我的模型:
name = models.CharField(max_length=255)
我嘗試對查詢集進行排序。 我只是考慮一下:
obj = MyModel.objects.all().sort_by(-len(name)) #???
任何的想法?
您可能需要在python中進行排序。
sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True)
或我撒了謊(快速的Google搜索發現了以下內容)
MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
新的熱點(從Django 1.8開始)是Length()
from django.db.models.functions import Length
obj = MyModel.objects.all().order_by(Length('name').asc())
您當然可以使用Python的sorted
對結果進行sorted
,但這並不理想。 相反,您可以嘗試以下操作:
MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length')
您將需要使用extra
參數來傳遞SQL函數:
obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)'])
注意,這是特定於數據庫的:MySQL使用LENGTH
,其他人可能使用LEN
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.