2013-03-19 2 views
0

두 가지 모델을 검색해야하는 장고 프로젝트가 있고 모델 중 하나는 내가 기반으로 필터링해야하는 3 가지 유형이 있습니다. haystack을 기본 의미로 사용하고 있습니다 (기본 url conf 및 SearchView를 사용하여 내 모델을 만들고 템플릿을 시작 설명서에서 잘 반환하고 있습니다).템플릿의 전체 검색 막대와 함께 django haystack 검색 사용

문제는 기본 search.html 템플릿의 검색 양식을 사용하여 결과 만 얻을 수 있으며 전 세계 검색 막대를 건초 더미와 함께 사용할 수 있도록 노력하고 있지만 얻을 수없는 것입니다. 맞습니다. 건초 더미 문서에 많은 행운이 없습니다. 나는 내 검색 애플 리케이션에서 다음과 같은 방법으로 나를 인도 한 또 다른 질문을 발견했다.

내 urls.py 내 search.views이보기에 "/ 검색"을 지시는 :

http://example.com/search/?q=test&type=blog

이됩니다

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) 부분을 제거하면 게시 유형별로 필터링되지는 않지만 검색 결과가 다시 표시됩니다. 어떤 아이디어? 나는 꽤 명백한 무언가를 놓치고 있다고 생각하지만 나는 이것을 알아낼 수 없다.

감사합니다, - 션

편집 :

그것은 그냥 바보임을 밝혀졌습니다. 내 PostIndex 클래스에 유형 필드가 없기 때문에 유형별로 SQS를 필터링하는 결과가 반환되지 않는 이유가 있습니다. 내 PostIndex를 다음으로 변경했습니다 :

class PostIndex(indexes.SearchIndex, indexes.Indexable): 
     ... 
     type = indexes.CharField(model_attr='type') 

그리고 이제는 모두 작동합니다.

응답 주셔서 감사합니다!

답변

1
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) 
관련 문제