Django queryset __contains区分大小写?

时间:2012-08-26 17:35:25

标签: django django-models

我想执行一个简单的查询:

Pizza.object.filter(topping__contains='PEPERONI')
像这样,它就像一个魅力。但是,如果我尝试:

Pizza.object.filter(topping__contains='peperoni')

它不起作用。

你知道为什么它区分大小写吗?是否有从django取消此功能的选项?

2 个答案:

答案 0 :(得分:12)

使用Pizza.object.filter(topping__icontains='peperoni')

使用__icontains检查过滤。

答案 1 :(得分:0)

您需要导入并使用Q对象:

from django.db.models import Q 

Resulting_Queryset = MyModel.objects.filter(Q(name__istartswith='Nishank Gupta'.strip().lower()) &  Q(name__iendswith='Nishank Gupta'.strip().lower()))

这将匹配Nishank GuptaNishank GUPTA以及NisHANnk Gupta,依此类推。希望这可以帮助。请让我知道你的看法。

或使用iexact:

MyModel.objects.filter(name__iexact='Nishank Gupta'.strip().lower())