我正在使用 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.xml 和 solrconfig.xml 进行一些更改
索引字段
某些字段(例如产品的价格或 product_class)由 Django Oscar 自动索引。如果要索引其他字段(例如产品属性),则必须编辑 oscar 搜索应用程序的 search_indexes.py 以指定要索引的新字段。推荐使用 fork oscar 搜索应用程序指定您自己的 search_indexes.py 的方法。
在添加要编制索引的新字段后,不要忘记重新编制产品索引。
指定搜索构面
settings.py 中的 OSCAR_SEARCH_FACETS 设置可用于指定要在前端显示的方面。指定 OSCAR_SEARCH_FACETS 的字段和查询,重新启动服务器,您将在前端看到新的方面。
关于python - OSCAR_SEARCH_FACETS 用于过滤产品列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32710792/