django-orm case-insensitive order by

前端 未结 3 442
深忆病人
深忆病人 2020-12-03 00:54

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__contain         


        
相关标签:
3条回答
  • 2020-12-03 01:27

    This is for postgresql, but maybe it will be useful for other databases too:

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

    0 讨论(0)
  • 2020-12-03 01:31

    This answer is outdated, check below solution with django 1.8 ->

    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')
    

    original link:

    http://naorrosenberg.blogspot.fi/2011/04/django-models-orderby-charfield-case.html

    0 讨论(0)
  • 2020-12-03 01:39

    Since Django 1.8 it is possible with:

    from django.db.models.functions import Lower
    MyModel.objects.order_by(Lower('myfield'))
    

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

    0 讨论(0)
提交回复
热议问题