Django-Haystack 分面初始设置
Django-Haystack Faceting Initial Set up
Haystack 2.4.1 (Django 1.9)
我在进行分面搜索时遇到问题。
我尝试按照 最近的 Stack Overflow 回答中的示例进行操作,但它仍然无法正常工作。
来自搜索应用
#search/views.py
from django.shortcuts import render
from haystack.forms import FacetedSearchForm
from haystack.generic_views import FacetedSearchView as BaseFacetedSearchView
class FacetedSearchView(BaseFacetedSearchView):
form_class = FacetedSearchForm
facet_fields = ['categories']
template_name = 'search/search.html'
context_object_name = 'page_object'
#urls.py
from haystack.forms import FacetedSearchForm
from search.views import FacetedSearchView
from haystack.query import SearchQuerySet
urlpatterns += patterns('haystack.views',
url(r'^search/', FacetedSearchView.as_view(), name='haystack_search'),
)
如果你们能提供任何帮助,我将不胜感激。我在这方面束手无策。
我正在使用 Haystack 文档中的模板。
{% if query %}
<!-- Begin faceting. -->
<h2>By Category</h2>
{{ self.get_facets }}
<div>
<dl>
{% if facets.fields.category %}
<dt>category</dt>
{# Provide only the top 5 categories #}
{% for category in facets.fields.categories|slice:":5" %}
<dd><a href="{{ request.get_full_path }}&selected_facets=category_exact:{{ category.0|urlencode }}">{{ category.0 }}</a> ({{ category.1 }})</dd>
{% endfor %}
{% else %}
<p>No category facets.</p>
{% endif %}
</dl>
</div>
<!-- End faceting -->
<!-- Display results... -->
{% for result in page_object %}
<div class="search_result">
<h3><a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a></h3>
<p>{{ result.object.body|truncatewords:80 }}</p>
</div>
{% empty %}
<p>Sorry, no results found.</p>
{% endfor %}
{% endif %}
页面不在上下文中。直接使用object_list访问对象。
否则,如果您想按照网站官方教程进行操作,只需在 urls.py:
中使用它
url(r'^search/', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset = SearchQuerySet().facet('author')), name='haystack_search)
而不是:
url(r'^search/', FacetedSearchView(form_class=FacetedSearchForm, selected_facets=['author'] , name='haystack_search).
希望对大家有所帮助:)
Haystack 2.4.1 (Django 1.9)
我在进行分面搜索时遇到问题。
我尝试按照
来自搜索应用
#search/views.py
from django.shortcuts import render
from haystack.forms import FacetedSearchForm
from haystack.generic_views import FacetedSearchView as BaseFacetedSearchView
class FacetedSearchView(BaseFacetedSearchView):
form_class = FacetedSearchForm
facet_fields = ['categories']
template_name = 'search/search.html'
context_object_name = 'page_object'
#urls.py
from haystack.forms import FacetedSearchForm
from search.views import FacetedSearchView
from haystack.query import SearchQuerySet
urlpatterns += patterns('haystack.views',
url(r'^search/', FacetedSearchView.as_view(), name='haystack_search'),
)
如果你们能提供任何帮助,我将不胜感激。我在这方面束手无策。
我正在使用 Haystack 文档中的模板。
{% if query %}
<!-- Begin faceting. -->
<h2>By Category</h2>
{{ self.get_facets }}
<div>
<dl>
{% if facets.fields.category %}
<dt>category</dt>
{# Provide only the top 5 categories #}
{% for category in facets.fields.categories|slice:":5" %}
<dd><a href="{{ request.get_full_path }}&selected_facets=category_exact:{{ category.0|urlencode }}">{{ category.0 }}</a> ({{ category.1 }})</dd>
{% endfor %}
{% else %}
<p>No category facets.</p>
{% endif %}
</dl>
</div>
<!-- End faceting -->
<!-- Display results... -->
{% for result in page_object %}
<div class="search_result">
<h3><a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a></h3>
<p>{{ result.object.body|truncatewords:80 }}</p>
</div>
{% empty %}
<p>Sorry, no results found.</p>
{% endfor %}
{% endif %}
页面不在上下文中。直接使用object_list访问对象。
否则,如果您想按照网站官方教程进行操作,只需在 urls.py:
中使用它url(r'^search/', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset = SearchQuerySet().facet('author')), name='haystack_search)
而不是:
url(r'^search/', FacetedSearchView(form_class=FacetedSearchForm, selected_facets=['author'] , name='haystack_search).
希望对大家有所帮助:)