2016-01-21 165 views
0

值我需要的,如果現場「Answer_String」包含一個數值的任何一個創造,我要檢查查詢中的任何一個名單。如何檢查是否字符串包含列表中查詢在Django ORM

我做了這樣:

q=queryset.filter(reduce(operator.and_, (Q(answer_string__contains = item) for item in answerList))) 

有一個沒有。的複選框,用戶可以從中選擇多個答案,並且我在answer_string字段中創建了list.any值,可以在該字符串中包含多個答案。但我想檢查字符串是否包含列表中的任何一個值,它應該將其視爲是。

此查詢我寫我返回結果爲零。請幫忙嗎?

回答

1

如果你想檢查是否字段包含「任何」列表中的值使用operator.or_

operator.and_and地連接了小Q的對象。因此,您當前的查詢正在搜索包含所有列表值的字段值。

1

我認爲這應該工作

queryset.filter(answer_string__in = answerList) 

另外,我不認爲你應該使用operator.and_而operator.or_

選中也該鏈接 Filter Django database for field containing any value in an array

+0

的answer_string可能就像:「這是我的答案」,並且列表只會有「答案」。這可能會失敗的條件。 –

+0

Soory我沒有在這個問題。我將uodate它現在提到這一點。 –

+0

OK,在這種情況下,你做你嘗試使用operator.or_ –

相關問題