我一直在尝试使用rdf-haystack过滤器实现多个模型,但它不起作用。这是我的例子: 我有两个模型search_indexes.py
class PersonSkillIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
person_name = indexes.CharField(model_attr='person_id')
skill_name = indexes.EdgeNgramField(model_attr='skill_id')
autocomplete = indexes.EdgeNgramField()
@staticmethod
def prepare_autocomplete(obj):
return " ".join((obj.skill_id.name))
def get_model(self):
return PersonSkill
def index_queryset(self, using=None):
return self.get_model().objects.all()
def prepare_person_id(self, obj):
return obj.person_id.name
def prepare_skill_id(self, obj):
return obj.skill_id.name
class PersonPositionIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
person_name = indexes.CharField(model_attr='person_id')
position_name = indexes.EdgeNgramField(model_attr='position_id')
autocomplete = indexes.EdgeNgramField()
@staticmethod
def prepare_autocomplete(obj):
return " ".join(( obj.position_id.title))
def get_model(self):
return PersonPosition
def index_queryset(self, using=None):
return self.get_model().objects.all()
def prepare_person_id(self, obj):
return obj.person_id.name
def prepare_position_id(self, obj):
return obj.position_id.name
我想使用以下searchQuerySet搜索PersonSkill和PersonPosition模型:
http://localhost:8000/en/api/profiles/search/?skill_name=python&position_name=programmer
Haytack过滤器是否支持此功能?如果有任何建议将受到欢迎! 感谢
答案 0 :(得分:0)
请通过
http://drf-haystack.readthedocs.io/en/latest/09_multiple_indexes.html
这篇文章介绍了一种与您所寻找的相似的方式。
基本上,您可以在'index_classes'属性中指定索引列表。
当您的搜索引擎为多个模型建立索引并且您想要在两个或多个模型中提供汇总结果时,这将很有用。要使用默认的多索引支持,只需在index_classes列表中添加多个索引即可。