Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在模板中使用带有全局搜索栏的django haystack搜索_Django_Search_Django Haystack - Fatal编程技术网

在模板中使用带有全局搜索栏的django haystack搜索

在模板中使用带有全局搜索栏的django haystack搜索,django,search,django-haystack,Django,Search,Django Haystack,我有一个django项目,需要搜索2个不同的模型,其中一个模型有3种类型,我需要根据它们进行筛选。我已经安装了haystack并在基本意义上工作(使用默认的url conf和SearchView作为我的模型和入门文档中的模板可以很好地返回结果) 问题是,我只能通过使用basic search.html模板中的搜索表单来获得结果,我正在尝试使用haystack创建一个全局搜索栏,但我似乎无法正确获得结果,而且我在haystack文档方面也没有太多运气。我在这里发现了另一个问题,在我的搜索应用程序中

我有一个django项目,需要搜索2个不同的模型,其中一个模型有3种类型,我需要根据它们进行筛选。我已经安装了haystack并在基本意义上工作(使用默认的url conf和SearchView作为我的模型和入门文档中的模板可以很好地返回结果)

问题是,我只能通过使用basic search.html模板中的搜索表单来获得结果,我正在尝试使用haystack创建一个全局搜索栏,但我似乎无法正确获得结果,而且我在haystack文档方面也没有太多运气。我在这里发现了另一个问题,在我的搜索应用程序中找到了以下方法

my urls.py将“/search”定向到我的搜索中的此视图。视图:

def search_posts(request):
    post_type = str(request.GET.get('type')).lower()
    sqs = SearchQuerySet().all().filter(type=post_type)
    view = search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=sqs,
        form_class=HighlightedSearchForm
        )
    return view(request)
输入的url字符串类似于:

这将从我的全局搜索栏中获取查询字符串,但不返回任何结果,但是如果我从sqs行中删除.filter(type=post_type)部分,我将再次获取搜索结果(尽管不是按post类型过滤)。有什么想法吗?我想我遗漏了一些相当明显的东西,但我似乎无法弄明白这一点

谢谢, -肖恩

编辑:

原来我只是个白痴。我在SQS上按类型进行筛选时没有返回结果的原因是,我的PostIndex类中没有包含类型字段。我将PostIndex更改为:

class PostIndex(indexes.SearchIndex, indexes.Indexable):
      ...
      type = indexes.CharField(model_attr='type')
重建了,现在一切都正常了

谢谢你的回复

def search_posts(request):
    post_type = str(request.GET.get('type')).lower()
    sqs = SearchQuerySet().filter(type=post_type)
    clean_query = sqs.query.clean(post_type)
    result = sqs.filter(content=clean_query)
    view = search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=result,
        form_class=HighlightedSearchForm
        )
    return view(request)