[英]Haystack search on a many to many field is not working
I'm trying to run a search on a model that has a many to many field, and I want to filter the search using this field. 我正在尝试在具有多对多字段的模型上运行搜索,并且我想使用此字段过滤搜索。
here is my current code: 这是我目前的代码:
search_indexes.py search_indexes.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()]
listing_text.txt listing_text.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 %}
I'm trying to do a simple search like: 我正在尝试做一个简单的搜索:
search_results = SearchQuerySet().filter(category=query_text).filter
it returns an empty list. 它返回一个空列表。 Thanks in advance. 提前致谢。
Reading your code I think the problem is here: 阅读你的代码我认为问题出在这里:
{% for category in obj.category.all %}
{{ category.name }}
{% endfor %}
Category is not an object, is a MultiValueField. 类别不是对象,是MultiValueField。 Maybe if you try something like: 也许如果你尝试类似的东西:
{% for category in object.category.all %}
{{ category.name }}
{% endfor %}
object.category.all instead of obj.category.all. object.category.all而不是obj.category.all。 I'm not sure the solution is this, but I'm pretty sure the error could be in this 3 lines. 我不确定解决方案是这个,但我很确定错误可能在这三行中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.