Python Django Haystack基于站点ID的搜索结果过滤器?

Python Django Haystack基于站点ID的搜索结果过滤器?,python,django,search,django-haystack,Python,Django,Search,Django Haystack,如何根据settings.SITE\u ID筛选搜索结果 我对基于站点ID的Haystack搜索结果有问题。我们有多个网站使用一个数据库存储所有内容,数据使用Django的站点框架基于站点ID显示 使用Haystack/Woosh进行搜索时,不会根据站点ID对结果进行过滤,除非我们创建一个包含站点ID过滤器的索引(见下文),但这将仅为一个网站提供索引值。没有它,它将索引所有DB值,并返回所有网站上未过滤的数据 注意:city_id的值与site_id的值相同,我们也可以为您选择 class S

如何根据settings.SITE\u ID筛选搜索结果

我对基于站点ID的Haystack搜索结果有问题。我们有多个网站使用一个数据库存储所有内容,数据使用Django的站点框架基于站点ID显示

使用Haystack/Woosh进行搜索时,不会根据站点ID对结果进行过滤,除非我们创建一个包含站点ID过滤器的索引(见下文),但这将仅为一个网站提供索引值。没有它,它将索引所有DB值,并返回所有网站上未过滤的数据

注意: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)

为什么它只索引一个网站的结果?在我看来,一切都在那里——字段、索引和过滤——除了为什么它不做所有的网站。Haystack/Woosh如何了解所有站点?您可以通过查询Site.objects.all并将其输入索引过程来影响这一点吗?谢谢您的反馈!当我索引所有内容时,所有未经站点ID过滤的结果都会显示在所有网站上。除非有办法在模板中或通过一些自定义视图等过滤完整的索引结果。Ayy想法?可能是,在模板中,您仍在查询所有对象,而不是特定于站点的对象。所以也可能是你做的每件事都是对的,除了你没有对网站进行过滤。您是否总是调用index_queryset?