OSCAR_SEARCH_FACETS 用于过滤产品列表

OSCAR_SEARCH_FACETS for filtering product lists

我正在使用 django oscar 开发电子商务网站。 列出了产品,我必须应用过滤器(例如年份、价格等)。我们可以将 oscar facet 用于此过滤功能吗?

我已经尝试按照 oscar documentation 添加以下内容,但不知道如何让它在我的前端工作和呈现。

OSCAR_SEARCH_FACETS = {
'fields': OrderedDict([
    ('product_class', {'name': _('Type'), 'field': 'product_class'}),
    ('rating', {'name': _('Rating'), 'field': 'rating'}),
]),
'queries': OrderedDict([
    ('price_range',
     {
         'name': _('Price range'),
         'field': 'price',
         'queries': [
             # This is a list of (name, query) tuples where the name will
             # be displayed on the front-end.
             (_('0 to 20'), u'[0 TO 20]'),
             (_('20 to 40'), u'[20 TO 40]'),
             (_('40 to 60'), u'[40 TO 60]'),
             (_('60+'), u'[60 TO *]'),
         ]
     }),
])
}

甚至可以用它来过滤产品,还是有其他方法?

简单回答

是的,您可以使用 oscar 根据各种搜索方面过滤产品。您将不得不使用 haystack 的简单后端以外的搜索后端。

您在问题的代码中提到的方面是默认可用的。 Oscar 提供了更多可以显示为搜索过滤器的字段和查询。如果您想要自定义应用程序且默认情况下不被 oscar 索引的字段(例如自定义产品属性),请查看详细答案。

详细解答

在最新版本的 oscar 中,您可以通过此方法添加默认情况下 oscar 中不存在的其他过滤器,例如年份、品牌、场合。

搜索后端

首先,使用 Haystack 简单后端以外的搜索后端。 Django oscar 正式支持 Apache Solr(Documentation here)。如果您使用的是最新版本的 Solr,您可能需要对 schema.xmlsolrconfig.xml[ 进行一些更改=11=]

索引字段

产品的 价格product_class 等某些字段由 Django Oscar 自动索引。如果您想索引其他字段,例如 产品属性 ,您将必须编辑 oscar 搜索应用程序的 search_indexes.py 以指定新字段索引。分叉 oscar 的搜索应用程序以指定您自己的 search_indexes.py 的推荐方法。 添加要索引的新字段后,不要忘记重新索引产品。

指定搜索构面 settings.py中的OSCAR_SEARCH_FACETS设置可用于指定在前端显示哪些方面。为 OSCAR_SEARCH_FACETS 指定字段和查询,重新启动服务器,您将在前端看到新的方面。