OSCAR_SEARCH_FACETS用于过滤产品列表

时间:2015-09-22 07:25:46

标签: python django django-oscar

我正在使用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 *]'),
         ]
     }),
])
}

是否可以使用它来过滤产品,还是有其他方式?

1 个答案:

答案 0 :(得分:7)

简单回答

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

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

详细答案

在最新版本的oscar上,您可以添加额外的过滤器,例如年份,品牌,场合,默认情况下不会出现在奥斯卡中。

搜索后端

首先,使用除Haystack简单后端之外的搜索后端。 Django oscar正式支持Apache Solr(Documentation here)。如果您使用的是最新版本的Solr,则可能必须对 schema.xml solrconfig.xml 进行一些更改

索引字段

产品的 price product_class 等某些字段由Django Oscar自动编入索引。如果要索引其他字段(例如产品属性),则必须编辑oscar搜索应用程序的 search_indexes.py 以指定要索引的新字段。建议使用oscar的搜索应用程序来指定您自己的 search_indexes.py 。 添加要编制索引的新字段后,请不要忘记重新编制产品索引。

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