在Raw Queryset中,使用ILIKE区分大小写,以检查其中一个字段是否以预定义字母开头

时间:2019-04-06 07:28:02

标签: django django-queryset

我使用的是原始查询集,除此之外,我还要检查名称是否以特定字符开头。

为了区分大小写,我使用ILIKE

qs = self.raw(
     f'''SELECT t.id, t.name, 
     ................
     WHERE t.is_active = true AND t.name ILIKE \'%s%\' ORDER BY name ASC''',
                params=[char])

我收到以下错误:

tuple Index out of range

我认为它的发生是由于以下原因:ILIKE \'%s%\',转义是错误的

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是在%的末尾添加char

qs = self.raw(
     '''SELECT t.id, t.name
     WHERE t.is_active = true AND t.name ILIKE %s ORDER BY name ASC''',
                params=[char + '%'])