我在我的一个项目中运行django-haystack v2.0.0和pyelasticsearch v0.3。我有一个SearchView
渲染列表模板,我想集成结果过滤。搜索运行良好,但我使用的过滤器根本不起作用?我使用以下过滤器__contains
, __lte
,__gte
但它们似乎都不会对结果列表产生影响。
比如说,我有 10 个SearchView
基于搜索词的结果。在同一个模板上,我有一个过滤器表单(使用该GET
方法)并调用相同的SearchView
. 现在在 SearchView 下,我定义了一个自定义私有_filter_results
方法,如下所示。
def _filter_results(results, filters):
"""
This method would return the filtered search results, based on
the filters applied by a user.
"""
for item in filters:
if item == 'location':
results = results.filter(locations__contains=filters[item])
print results
if item == 'age_min':
results = results.filter(workex_min__gte=filters[item])
if item == 'age_max':
results = results.filter(workex_max__lte=filters[item])
return results
现在,我将结果传递给模板,如下所示:
context {'results' : _filter_results(self.results, self.result_filters)}
self.result_filters
是我在SearchView
's__call__
方法中设置的过滤器字典,它看起来像这样。
{
'location' : request.GET.get('location'),
'age_min' : request.GET.get('age_min'),
'age_max' : request.GET.get('age_max'),
}
我没有收到任何错误,并且我仔细检查了每个过滤器值是否正在传递给该_filter_results
方法。但结果仍然保持不变。
如果在 10 个条目的结果列表中,我尝试使用其中没有一个条目包含该位置的位置进行过滤,我仍然会得到相同 10 个条目的结果。可能是什么原因 ?