OSCAR_SEARCH_FACETS用于过滤产品列表

Kis*_*han 5 python django django-oscar

我正在使用django oscar开发电子商务网站.产品已列出,我必须应用过滤器(例如年份,价格等).我们可以使用oscar facet来实现这种过滤功能吗?

我尝试按照oscar文档添加以下内容,但不知道如何使其工作并在我的前端渲染.

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 *]'),
         ]
     }),
])
}
Run Code Online (Sandbox Code Playgroud)

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

war*_*n26 8

简单的答案

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

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

详细解答

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

搜索后端

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

索引字段

某些字段,例如产品或product_class的价格由Django Oscar自动编入索引.如果要索引其他字段(如产品属性),则必须编辑oscar搜索应用程序的search_indexes.py以指定要索引的新字段.推荐的方法来分叉奥斯卡的搜索应用程序以指定您自己的search_indexes.py.添加要编制索引的新字段后,请不要忘记重新编制产品索引.

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