【问题标题】:Django-Haystack Faceting Initial Set upDjango-Haystack Faceting 初始设置
【发布时间】:2016-05-05 00:05:10
【问题描述】:

干草堆 2.4.1 (Django 1.9)

我在分面搜索时遇到问题。

我尝试按照 this 最近的 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 }}&amp;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 %}

【问题讨论】:

  • 我在this question 中回答了您在第 1 步中提到的问题。 Haystack 文档已损坏。
  • 感谢 solarissmoke 的回复。我试图遵循您的更改,但仍然遇到问题。任何帮助将不胜感激。
  • 有什么问题?您是否收到错误或只是没有出现任何方面?你重建搜索索引了吗?
  • 我没有收到任何错误,只是没有显示任何方面,也没有找到常规搜索结果。当我在 shell 中运行 sqs.facet_counts() 时,输出很好。但是,当我通过搜索表单运行搜索时,显示结果显示“没有类别方面”和“抱歉,未找到结果”。我已经重建了搜索索引,但没有任何变化。再次感谢您的帮助,solarissmoke。
  • 听起来像是模板上下文问题。对于搜索结果,请尝试{% for result in object_list %},而不是您目前拥有的,看看是否有什么不同?

标签: python django django-haystack


【解决方案1】:

页面不在上下文中。直接使用 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).

希望这对某人有所帮助:)

【讨论】:

    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多