django oscar rebuild_index有错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django oscar rebuild_index有错误相关的知识,希望对你有一定的参考价值。
apps.search.search_indexes.py
class ProductIndex(search_indexes.ProductIndex):
def index_queryset(self, using=None):
return super(ProductIndex, self).index_queryset().exclude(categories=None)
def read_queryset(self, using=None):
return super(ProductIndex, self).read_queryset().exclude(categories=None)
def prepare(self, obj):
prepared_data = super(ProductIndex, self).prepare(obj)
attrs = defaultdict(set)
attrs_from_obj = lambda obj: [attrs[attr.attribute.code].add(attr.value) for attr in obj.attr.get_values()]
if obj.is_parent:
for child in obj.children.all():
attrs_from_obj(child)
else:
attrs_from_obj(obj)
for attr, vals in attrs.items():
prepared_data[attr] = list(vals)
return prepared_data
./manage_py rebuild_indexes --noinput
之后我有一个错误:
无法向Solr添加文档:Solr响应错误(HTTP 400):[原因:错误:[doc = catalogue.product.1451] unknown field'proizvoditel']
在仪表板中我有产品类型,其属性名为Producer
,代码为proizvoditel
我更换了proizvoditel
- > proizvoditel_s
并且rebuild_index没问题,但搜索不起作用。
如果您收到未知的字段错误,可能是由于您尝试引入的字段尚未在架构中注册。
您使用的是什么版本的Django-Oscar和Solr?我正在使用Oscar 1.5和Solr 4.7.2,因此您的设置可能会略有不同。
如果你在bash中运行以下(假设你正在关注奥斯卡文档)它应该解决你的字段问题:
$ python manage.py build_solr_schema > solr-4.7.2/example/solr/collection1/conf/schema.xml
如果您有自己的Solr设置,那么自己运行build_solr_scema
并将文件复制到solr的conf目录中。
确保重新启动服务器。然后做:
$ python manage.py rebuild_index --noinput
看看是否有帮助。
以上是关于django oscar rebuild_index有错误的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Stripe 支付网关与 Django Oscar 集成?
使用 Django 自动设置 Apache Solr - AWS Elastic Beanstalk 上的 Oscar