두 가지 모델을 검색해야하는 장고 프로젝트가 있고 모델 중 하나는 내가 기반으로 필터링해야하는 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')
그리고 이제는 모두 작동합니다.
응답 주셔서 감사합니다!