我知道,我可以在DJango ORM中运行不区分大小写的搜索。喜欢,
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")而且,我还可以像这样获取它们
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的直接方法??就像我想要的序列一样
# desired sequence: jake, Jake, sulley, Sulley如果不是,那么建议一个最好的方法。提前谢谢。
发布于 2012-08-19 19:54:53
此答案已过时,请使用django >= 1.8关注
我使用.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
发布于 2015-12-29 15:27:49
从Django 1.8开始,可以使用:
from django.db.models.functions import Lower
MyModel.objects.order_by(Lower('myfield'))发布于 2010-08-05 03:37:37
这是针对postgresql的,但也可能对其他数据库有用:
http://scottbarnham.com/blog/2007/11/20/case-insensitive-ordering-with-django-and-postgresql/
https://stackoverflow.com/questions/3409047
复制相似问题