User.objects.filter(name__in=["A", "AB", "a", "ab", "Ab"])
这是在in
中使用Django
字段查找的示例。
但是我想知道这是使用in
像icontains
这样不区分大小写的技巧吗?
谢谢
答案 0 :(得分:3)
其他人的回答很好。
我正在寻找另一种使用Lower function
的方式lower_list = map(lambda x:x.lower(), ["A", "AB", "a", "ab", "Ab"])
User.objects.annotate(name_lower=Lower('name').filter(name_lower__in=lower_list)
这是另一种方式。我认为其他人的答案接近一个好的答案。
答案 1 :(得分:2)
对于不区分大小写的操作,可以使用iregex
User.objects.filter(name__iregex=r'(A|AB|a|ab|Ab)')
引用:https://docs.djangoproject.com/en/dev/ref/models/querysets/#iregex
更新: 您可以自己查找。从https://docs.djangoproject.com/en/dev/ref/models/lookups/
获取帮助答案 2 :(得分:1)
根据Django query case-insensitive list match,除了进行iregex
查找外,没有其他解决方案