Python 在多对多领域的草堆搜索不起作用

Python 在多对多领域的草堆搜索不起作用,python,django,django-models,django-haystack,whoosh,Python,Django,Django Models,Django Haystack,Whoosh,我正在尝试对具有多对多字段的模型运行搜索,我希望使用此字段筛选搜索 这是我目前的代码: search_index.py class ListingInex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) business_name = indexes.CharField(model_attr='business_name') c

我正在尝试对具有多对多字段的模型运行搜索,我希望使用此字段筛选搜索

这是我目前的代码:

search_index.py

class ListingInex(indexes.SearchIndex, indexes.Indexable):
   text = indexes.CharField(document=True, use_template=True)
   business_name = indexes.CharField(model_attr='business_name')
   category = indexes.MultiValueField(indexed=True, stored=True)
   city = indexes.CharField(model_attr='city')
   neighborhood= indexes.CharField(model_attr='neighborhood')
   state = indexes.CharField(model_attr='state')
   address = indexes.CharField(model_attr='address')
   zip_code = indexes.CharField(model_attr='zip_code')
   phone_number = indexes.CharField(model_attr='phone_number')

    def get_model(self):
          return listing

    def index_queryset(self, using=None):
      return self.get_model().objects.all()

    def prepare_category(self, obj):
       return [category.name for category in obj.category_set.all()]
清单1.txt

{{ object.business_name }}
{{ object.state }}
{{object.city}}
{{object.zip_code}}
{{object.phone_number}} 
{{object.neighborhood}}
{% for category in obj.category.all %}
{{ category.name }}
{% endfor %}
我正在尝试做一个简单的搜索,如:

search_results = SearchQuerySet().filter(category=query_text).filter

它返回一个空列表。提前感谢。

阅读您的代码,我认为问题在于:

{% for category in obj.category.all %}
{{ category.name }}
{% endfor %}
类别不是对象,而是多值字段。也许你可以尝试以下方式:

{% for category in object.category.all %}
{{ category.name }}
{% endfor %}

object.category.all而不是obj.category.all。我不确定解决方案是这样的,但我很确定错误可能在这3行中。

我像你说的那样更改了它,现在只有'SearchQuerySet().filter(content=query\u text)'检测到类别搜索,但'SearchQuerySet().filter(category=query\u text)仍然返回空列表。