2016-01-21 163 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_ –

相关问题