我希望能够在用于搜索的django查询中使用通配符。然而,随着文件说:如何在查询中告诉django不要跳过%和_
Entry.objects.filter(headline__contains = '%')
会导致SQL看起来是这样的:
SELECT ... WHERE标题LIKE'%\ %%';
如何告诉django不要在查询中跳过%和_。或者有另一种方式来实现Django中的通配符搜索(除了直接写入SQL)?
我希望能够在用于搜索的django查询中使用通配符。然而,随着文件说:如何在查询中告诉django不要跳过%和_
Entry.objects.filter(headline__contains = '%')
会导致SQL看起来是这样的:
SELECT ... WHERE标题LIKE'%\ %%';
如何告诉django不要在查询中跳过%和_。或者有另一种方式来实现Django中的通配符搜索(除了直接写入SQL)?
可以使用extra()
方法插入自定义的where子句:
Entry.objects.extra(where="headline LIKE '%'")
headline__contains='%'
将意味着标题是什么,不是吗?在这种情况下为什么将它包含在查询中?
错误,因为它是一个例子,当然... – 2010-06-28 18:36:13
这可能是执行通用通配符的唯一方法,但也要记住不同的DB后端以不同的方式执行此操作,这不会为您隐藏差异。在某些情况下,如果您的字符串可能有转义符,则需要使用\'escape'ESCAPE'\'来说'LIKE'字符串\'。在Postgresql中,你需要说'LIKE E'string'和\'escapes''。 – 2010-06-28 18:40:41