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表2视图中使用Haystack搜索_Django_Search_Django Haystack - Fatal编程技术网

在Django表2视图中使用Haystack搜索

在Django表2视图中使用Haystack搜索,django,search,django-haystack,Django,Search,Django Haystack,我正在尝试将Haystack/Whoosh搜索用于Django表2。搜索结果应呈现为表。这是我当前用于呈现表的视图: def people(request): table = PersonTable(Person.objects.filter(pk=1)) RequestConfig(request).configure(table) return render(request, 'people.html', {'table': table}) Haystack应该将搜

我正在尝试将Haystack/Whoosh搜索用于Django表2。搜索结果应呈现为表。这是我当前用于呈现表的视图:

def people(request):
    table = PersonTable(Person.objects.filter(pk=1))
    RequestConfig(request).configure(table)
    return render(request, 'people.html', {'table': table})
Haystack应该将搜索结果的主键传递给上面的查看函数,比如so
Person.objects.filter(pk=va1,pk=var2)
,这样这个查看函数就可以显示结果


我能够写一个工作视图:

def report(request, template='report.html', load_all=True, form_class=ModelSearchForm, searchqueryset=None, context_class=RequestContext, extra_context=None, results_per_page=None):
    table = ''
    query = ''
    results = EmptySearchQuerySet()

    if request.GET.get('q'):
        form = form_class(request.GET, searchqueryset=searchqueryset, load_all=load_all)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            pklist = [ r.pk for r in results ]
            table = PersonTable(Person.objects.filter(pk__in=pklist))
            RequestConfig(request).configure(table)
    else:
        form = form_class(searchqueryset=searchqueryset, load_all=load_all)

    context = {
        'form': form,
        'table': table,
    }

    return render_to_response(template, context, context_instance=context_class(request))

它不知怎么起作用了。然而,由于我只是一个Django初学者,我觉得还有改进的余地。我把它贴在这里是为了得到一些有用的建议

假设使用
SearchQuerySet
创建
PersonTable
实例不是一个选项,您可以尝试从搜索中传递
Person
对象的列表

def search(request):
    # Let's say there's some logic here for querying your search engine
    # using Haystack, and `results` is a SearchQuerySet of Person results
    table = PersonTable([result.object for result in results])
    RequestConfig(request).configure(table)
    return render(request, 'people.html', {'table': table})

否则,您需要将结果的主键传递给view函数的问题陈述有点不清楚。

我得到以下错误。”“非类型”对象没有“获取字段”属性。有什么想法吗?