내 프로젝트 중 하나에서 django-haystack v2.0.0과 pyelasticsearch v0.3을 실행 중입니다. 나는 SearchView
이 목록 템플릿을 렌더링하고 결과 필터링을 통합하려고합니다. 검색은 정상적으로 실행되지만 사용중인 필터가 전혀 작동하지 않습니다. 나는 다음과 같은 필터 __contains
, __lte
, __gte
하지만 그들 중 누구도 결과 목록에 차이를 만들 것 같다을 사용합니다.은 (는) 검색 쿼리 집합의 __contains 필터입니다.
이렇게 말하면 검색 용어를 기준으로 SearchView
에서 렌더링 한 10 개의 결과가 있습니다. 동일한 템플릿에서 나는 필터 양식 (GET
메서드를 사용)을 가지고 있으며 같은 SearchView
을 호출합니다. 이제 SearchView 아래에 다음과 같이 정의 된 사용자 지정 개인 _filter_results
메서드가 있습니다.
context {'results' : _filter_results(self.results, self.result_filters)}
self.result_filters
내가 SearchView
의 __call__
방법에 설정된 필터의 사전이며이 같은 모양 다음과 같이
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
지금, 나는 템플릿에 결과를 전달합니다.
{
'location' : request.GET.get('location'),
'age_min' : request.GET.get('age_min'),
'age_max' : request.GET.get('age_max'),
}
나는 오류를 얻을하지 않습니다, 나는 이중 각 필터 값이 _filter_results
메서드에 전달되고 있음을 확인했다. 그러나 결과는 여전히 동일하게 유지됩니다.
10 개 항목의 결과 목록에 위치가 포함되지 않은 위치로 필터링하려고하면 동일한 10 개 항목의 결과가 계속 표시됩니다. 그 이유는 무엇일까요?