【问题标题】:SearchQuerySet().filter(content='content') returns results, but they don't show up in search.htmlSearchQuerySet().filter(content='content') 返回结果,但它们不会出现在 search.html 中
【发布时间】:2017-09-20 17:00:40
【问题描述】:

我可以进入我的 shell 并输入

 sqs = SearchQuerySet().filter(content='content')
 len(sqs)

我得到了结果。我检查了它们,当我输入时

 sqs[0]
 sqs[0].id
 sqs[0].text

我得到了连贯的结果。但是,当我在我的网站上使用搜索表单时,我没有得到任何结果。

我什至没有定义我自己的 SearchView。它是默认的。在模板上,我试过了

 {% for result in page.object_list %}
 {% for result in object_list %}
 {% for result in page_obj.object_list %}

仍然没有得到任何结果。查询确实运行了,因为我可以在里面放东西

 {% if query %}

所以这显然有效。我该怎么办?

谢谢。

【问题讨论】:

  • 发表你的意见.py
  • 这是默认的 Haystack 视图。
  • {{ page.object_list|length }} 在模板中为您提供了什么?
  • 您检查控制台是否有任何前端错误?
  • @AndreyShipilov 它给出 0。控制台报告没有错误。

标签: python django search django-haystack


【解决方案1】:

我通过替换解决了这个问题

  url(r'^search/', include('haystack.urls')),

 url(r'^search/?$', views.SearchResultsView.as_view(), name='search-view'),

制作我自己的 SearchResultsView 并没有什么特别之处

 class SearchResultsView(SearchView):
     template_name = 'search/search.html'
     form_class = MySearchForm
     queryset = SearchQuerySet().all()
     paginate_by = 10
     context_object_name = 'object_list'

并使用

  page_obj

在模板中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多