如何根据settings.SITE_ID?
过滤搜索结果我在基于SITE_ID的Haystack搜索结果中遇到问题。我们有多个网站使用一个存储所有内容的数据库,并使用Django的网站框架基于SITE_ID显示数据。
使用Haystack / Woosh进行搜索时,除非我们创建包含SITE_ID过滤器的索引(见下文),否则不会根据SITE_ID过滤结果,但这只会为一个网站的索引编制索引。没有它,它将索引所有数据库值,并在所有网站上返回未过滤的数据。
注意:city_id
与site_id
的值相同,我们也可以。
class SiteIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name', boost=1.5)
keywords = indexes.CharField(model_attr='keywords')
about = indexes.CharField(model_attr='about', boost=0.5)
city_id = indexes.IntegerField(model_attr='city_id')
content_auto = indexes.EdgeNgramField(model_attr='name')
def get_model(self):
return Business
def index_queryset(self, using=None):
return self.get_model().objects.filter(city_id=settings.SITE_ID)