Django模型-不区分大小写的动态匹配查询

时间:2019-02-06 10:33:07

标签: sql django postgresql

非常简单。 我需要一个带有CaseInsensitive和Full Like的IN。

示例

搜索探针:“暴击,正常”

我需要找到所有具有列值的行:“严重,严重,严重,正常,正常”

PostgreSql

在Google上搜索时,我发现Postgres函数“类似于”

lower(column_name) similar to '%(crit|norm)%';

有没有办法在Django中实现?

在Yugandhar Chaudhari回复后添加新信息

问题不完整。搜索探针位于数组内部。 我想要这样的东西:

probes = ["Crit","Norm"] model_name.objects.filter(columnname_icontains_in = probes)

1 个答案:

答案 0 :(得分:0)

对于不区分大小写的匹配,您可以尝试

from django.db.models import Q YouModel.objects.filter(Q(column_name__iexact="crit")|Q(column_name__iexact="norm"))

如果要查找子字符串模式

from django.db.models import Q YouModel.objects.filter(Q(column_name__icontains="crit")|Q(column_name__icontains="norm"))

更新后

values = ['crit', 'norm']
qobjs = Q() #empty objects
for value in values:
    qobjs |= Q(coulmn_name__icontains=value) #Dynamically add Q objects 
result = YourModel.objects.filter(qobjs)