您是否尝试SearchIndex
使用此信息添加字段?例如
class NoteIndex(SearchIndex, indexes.Indexable):
title = CharField(model_attr='title')
facet_model_name = CharField(faceted=True)
def get_model(self):
return Note
def prepare_facet_model_name(self, obj):
return "note"
class MemoIndex(SearchIndex, indexes.Indexable):
title = CharField(model_attr='title')
facet_model_name = CharField(faceted=True)
def get_model(self):
return Memo
def prepare_facet_model_name(self, obj):
return "memo"
Run Code Online (Sandbox Code Playgroud)
依此类推,只需为每个搜索索引返回一个不同的字符串.您还可以创建一个mixin并返回由其返回的模型的名称get_model
.
假设您已将此字段添加到每个SearchIndex
定义中,只需将facet
方法链接到结果即可.
results = form.search().facet('facet_model_name')
Run Code Online (Sandbox Code Playgroud)
现在,该facet_counts
方法将返回一个字典,其中包含分面字段和每个构面值的结果计数,在本例中为模型名称.
请注意,此处的字段标记为详细,以避免可能与model_name
Haystack添加的字段冲突.它不是刻面的,我不确定重复它是否会导致冲突.
归档时间: |
|
查看次数: |
1354 次 |
最近记录: |