2010-06-28 57 views
0

我希望能够在用于搜索的django查询中使用通配符。然而,随着文件说:如何在查询中告诉django不要跳过%和_

Entry.objects.filter(headline__contains = '%')

会导致SQL看起来是这样的:

SELECT ... WHERE标题LIKE'%\ %%';

如何告诉django不要在查询中跳过%和_。或者有另一种方式来实现Django中的通配符搜索(除了直接写入SQL)?

回答

0

可以使用extra()方法插入自定义的where子句:

Entry.objects.extra(where="headline LIKE '%'") 
+0

这可能是执行通用通配符的唯一方法,但也要记住不同的DB后端以不同的方式执行此操作,这不会为您隐藏差异。在某些情况下,如果您的字符串可能有转义符,则需要使用\'escape'ESCAPE'\'来说'LIKE'字符串\'。在Postgresql中,你需要说'LIKE E'string'和\'escapes''。 – 2010-06-28 18:40:41

1

headline__contains='%'将意味着标题是什么,不是吗?在这种情况下为什么将它包含在查询中?

+0

错误,因为它是一个例子,当然... – 2010-06-28 18:36:13

相关问题