首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-orm不区分大小写的order by

django-orm不区分大小写的order by
EN

Stack Overflow用户
提问于 2010-08-05 03:21:42
回答 4查看 15.2K关注 0票数 48

我知道,我可以在DJango ORM中运行不区分大小写的搜索。喜欢,

代码语言:javascript
复制
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")

而且,我还可以像这样获取它们

代码语言:javascript
复制
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)

有没有不区分大小写的fetch的直接方法??就像我想要的序列一样

代码语言:javascript
复制
# desired sequence: jake, Jake, sulley, Sulley

如果不是,那么建议一个最好的方法。提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-19 19:54:53

此答案已过时,请使用django >= 1.8关注

我使用.extra找到了解决方案

代码语言:javascript
复制
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

票数 26
EN

Stack Overflow用户

发布于 2015-12-29 15:27:49

从Django 1.8开始,可以使用:

代码语言:javascript
复制
from django.db.models.functions import Lower
MyModel.objects.order_by(Lower('myfield'))

https://code.djangoproject.com/ticket/6498

票数 98
EN

Stack Overflow用户

发布于 2010-08-05 03:37:37

这是针对postgresql的,但也可能对其他数据库有用:

http://scottbarnham.com/blog/2007/11/20/case-insensitive-ordering-with-django-and-postgresql/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3409047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档