django-orm 不区分大小写的顺序 [英] django-orm case-insensitive order by
本文介绍了django-orm 不区分大小写的顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我知道,我可以从 DJango ORM 运行不区分大小写的搜索.喜欢,
I know, I can run a case insensitive search from DJango ORM. Like,
User.objects.filter(first_name__contains="jake")
User.objects.filter(first_name__contains="sulley")
User.objects.filter(first_name__icontains="Jake")
User.objects.filter(first_name__icontains="Sulley")
而且,我可以将它们获取为
And also, I can fetch them as
user_list = User.objects.all().order_by("first_name")
# sequence: (Jake, Sulley, jake, sulley)
user_list = User.objects.all().order_by("-first_name") # for reverse
# sequence: (sulley, jake, Sulley, Jake)
是否有不区分大小写的提取的直接方法?就像我想要一个序列一样
Is there a direct way for a case-insensitive fetch?? As in I want a sequence as
# desired sequence: jake, Jake, sulley, Sulley
如果没有,那么建议一个最好的方法来做到这一点.提前致谢.
If not, then suggest a best way to do it. Thanks in advance.
推荐答案
这个答案已经过时了,关注票选最高的解决方案 使用 django >= 1.8
This answer is outdated, follow top voted solution with django >= 1.8
我找到了使用 .extra 的解决方案
I found solution using .extra
class MyModelName(models.Model):
is_mine = models.BooleanField(default=False)
name = models.CharField(max_length=100)
MyModelName.objects.filter( is_mine=1 ).extra(
select={'lower_name':'lower(name)'}).order_by('lower_name')
原文链接:
http://naorrosenberg.blogspot.fi/2011/04/django-models-orderby-charfield-case.html
这篇关于django-orm 不区分大小写的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文