我一直在尝试使用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=programmerHaytack过滤器是否支持此功能?如果有任何建议,欢迎!谢谢
发布于 2018-07-30 15:40:26
请通过
http://drf-haystack.readthedocs.io/en/latest/09_multiple_indexes.html
这篇文章描述了一种类似于你正在寻找的方式。
基本上,您可以在“index_classes”属性中指定一个索引列表。
当您的搜索引擎已经为多个模型编制了索引,并且您希望提供其中两个或更多模型的聚合结果时,这会很有用。要使用默认的多索引支持,只需在index_classes列表中添加多个索引。
https://stackoverflow.com/questions/42872131
复制相似问题