7

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

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

4

1 回答 1

10

简单的答案

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

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

详细解答

在最新版本的 oscar 上,您可以添加额外的过滤器,例如 oscar 中默认不存在的年份、品牌、场合。

搜索后端

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

索引字段

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

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

于 2016-03-06T20:34:31.227 回答