簡體   English   中英

Django-如何按字段中的字符數對查詢集進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM