2010-06-28 50 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

相關問題