我有一个名单,例如:
name_list = ['Alpha', 'bEtA', 'omegA']
目前我有以下查询集:
MyModel.objects.filter(name__in=name_list)
我希望能够以不区分大小写的方式过滤名称。我的第一个想法是使用iexact
字段查找,但它似乎不适用于in
。如何将iexact
in
字段查找用于我的查询集?或者是否有另一种方法来执行此查询?
答案 0 :(得分:24)
这是我的解决方案,它使用Q objects代替:
name_list = ['Alpha', 'bEtA', 'omegA']
q_list = map(lambda n: Q(name__iexact=n), name_list)
q_list = reduce(lambda a, b: a | b, q_list)
MyModel.objects.filter(q_list)
答案 1 :(得分:3)
name_list = ['Alpha', 'bEtA', 'omegA']
results = MyModel.objects.none()
for name in name_list:
results |= MyModel.objects.filter(name__iexact=name)
好的我测试它并且它有效:)
答案 2 :(得分:0)