编程语言
首页 > 编程语言> > python – Haystack Faceted:__ init __()得到了一个意外的关键字参数’facet_fields’

python – Haystack Faceted:__ init __()得到了一个意外的关键字参数’facet_fields’

作者:互联网

在享受干草堆2.4.1(Django 1.8)的第一个结果的同时,我不得不承认我很难学习它.文档有时是不完整的,有些功能只有很少的例子.

分面搜索就是其中之一.

我正在关注documentation,并在url.py:

urlpatterns = patterns('haystack.views',
    url(r'^$', FacetedSearchView(form_class=FacetedSearchForm, facet_fields=['author']), name='haystack_search'),
)

我收到以下错误:

TypeError at /tag_analytics/faceted_search/

__init__() got an unexpected keyword argument ‘facet_fields’

看起来FacetSearchView不接受facet_fields参数,它将我带到版本2.4.0,当时正确的方法是

FacetedSearchView(form_class=FacetedSearchForm, searchqueryset=sqs)

虽然我确定我的版本是2.4.1,但我尝试了这个选项,并得到了一个

TypeError at /tag_analytics/faceted_search/

slice indices must be integers or None or have an __index__ method

提前感谢任何线索!

最好的,
艾伦

解决方法:

文档是错误的,令人困惑.您不能将facet_fields传递给FacetedSearchView的构造函数.

你采取的方法是正确的,虽然不是把所有这些参数放在url定义中,你应该创建自己的视图 – 如下所示:

# tag_analytics/views.py
from haystack.generic_views import FacetedSearchView as BaseFacetedSearchView

# Now create your own that subclasses the base view
class FacetedSearchView(BaseFacetedSearchView):
    form_class = FacetedSearchForm
    facet_fields = ['author']
    template_name = 'search.html'
    context_object_name = 'page_object'

    # ... Any other custom methods etc

然后在urls.py中:

from tag_analytics.views import FacetedSearchView
#...
url(r'^$', FacetedSearchView.as_view(), name='haystack_search'),

标签:django-haystack,faceted-search,python,django
来源: https://codeday.me/bug/20190724/1525266.html