Python 列表中重叠时的查询集筛选器

Python 列表中重叠时的查询集筛选器,python,django,django-haystack,Python,Django,Django Haystack,我的索引中有一个多值字段,其中包含给定提供者的专业列表。在我的搜索中,我希望允许用户选择要筛选的专业,筛选出至少一个专业与所选专业不匹配的任何提供商。基本上,我希望所有的提供者在专业上与所选的过滤器有任何重叠 例如,如果: Guido专门研究Python、C和Unix James擅长Java、Unix和编译器 比尔专门研究Windows和C 我选择了过滤器Python和Windows,我想看看Guido和Bill。 如果我选择filters和Compilers,我希望看到Guido、James和

我的索引中有一个多值字段,其中包含给定提供者的专业列表。在我的搜索中,我希望允许用户选择要筛选的专业,筛选出至少一个专业与所选专业不匹配的任何提供商。基本上,我希望所有的提供者在专业上与所选的过滤器有任何重叠

例如,如果:

Guido专门研究Python、C和Unix

James擅长Java、Unix和编译器

比尔专门研究Windows和C

我选择了过滤器Python和Windows,我想看看Guido和Bill。 如果我选择filters和Compilers,我希望看到Guido、James和Bill。等等等等

这是我的搜索索引.py

class ProviderIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    specialties = indexes.MultiValueField(model_attr='specialties_as_list')
我的表格

specialities = forms.MultipleChoiceField(widget=CheckboxSelectMultiple(), choices=Provider.SPECIALTY_CHOICES)
作为专业领域

编辑


对于任何不熟悉Haystack的人来说,查询的工作原理与django ORM基本相同,因此您仍然可以提供帮助!多值字段作为字符串的json数组存储在索引中,本质上是一个Python列表。有没有办法写一个查询集来检查两个列表之间是否存在交集?

简单的“in”过滤器完成了任务。。。这件事让我难堪了这么久,我觉得自己很傻

sqs=sqs.filter(specialties\uu in=self.cleaned\u data['specialties'])