2012-05-17 43 views
1

我應該能夠使用查詢集「_contains」在我的Django的對象變量來過濾我的結果,根據this documentation爲什麼django queryset不包含我的工作?

但是,當我實現這個代碼:

cookbooks = Books.objects.filter (category_contains = 'cooking')

我得到以下錯誤:

Cannot resolve keyword 'category_contains' into field. Choices are: category, adder, date etc.

這究竟是爲什麼?我還看到this StackOverflow question,有人解釋說只是使用變量category意味着category_exact。但是,如果我寫category_exact我收到類似的錯誤。

回答

4

您需要使用雙下劃線__不是一個下劃線_

+0

哦,你是對的。在玩遊戲時,我改變了一些其他的東西。這就是訣竅!謝謝! – user1328021

+0

@ user1328021不客氣。接受這個答案。 – Marcin

2

字段查找前綴通過兩個下劃線(__)而不是一個(_)。起初,當你不熟悉語法時,很難分辨這種差異。

仔細檢查一般文件field lookups,更具體地說是contains文件。下面是包含文檔的示例,其中註釋顯示一個或兩個下劃線:

Entry.objects.get(headline__contains='Lennon') 
#       __ <-- 2 _'s 
#      not _ <-- 1 _ 
相關問題