내 django 프로젝트에서 whoose backend와 함께 haystack을 사용하고 있습니다. 그리고 내 모델은 modeltranslation 모듈과 다국어입니다, 그것은 제목이라는 필드에 대한 title_tr, title_en 같은 자동 필드를 만듭니다 ...Django Haystack Whoosh 다국어 사이트
그물을 검색하고 아래 라인을 작성 선택한 언어를 인식하도록 노력하고 있지만 그것은 title_tr 작동하지 않습니다, entry_tags_tr 필드 ... #은
from haystack import indexes
from aksak.blog.models import Entry
class EntryIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(model_attr='descr_en', document=True, use_template=True)
text_tr = indexes.CharField(model_attr='descr_tr')
title_en = indexes.CharField(model_attr='title_en')
title_tr = indexes.CharField(model_attr='title_tr')
tags = indexes.MultiValueField(indexed=True, stored=True, model_attr='entry_tags')
def get_model(self):
return Entry
# haystackCustomQuery.py !!! IN URLS.PY I AM USING THIS CUSTOM VIEW <-------------
from django.conf import settings
from django.utils.translation import get_language
from haystack.query import SearchQuerySet, DEFAULT_OPERATOR
class MlSearchQuerySet(SearchQuerySet):
def filter(self, **kwargs):
if 'content' in kwargs:
kwd = kwargs.pop('content')
currentLngCode = str(get_language())
lngCode = settings.LANGUAGE_CODE
if currentLngCode == lngCode:
kwdkey = "text"
kwargs[kwdkey] = kwd
else:
kwdkey = "text_%s" % currentLngCode
kwargs[kwdkey] = kwd
if getattr(settings, 'HAYSTACK_DEFAULT_OPERATOR', DEFAULT_OPERATOR) == 'OR':
return self.filter_or(**kwargs)
else:
return self.filter_and(**kwargs)
안녕하세요, hystack은 내 예제에서 'text_en'속성이 없습니다 ... – ratata
''prepare_'' 메소드에서 실제 모델 필드 이름을 사용 했습니까? 나는 당신의''descr'' 필드 이름을 사용하기 위해 나의 예제를 업데이트했다. –
감사합니다. 지금 작동하고 있습니다. 하나의 작은 질문도 있습니다 ... 내 search_indexes.py에 'tags = indexes.MultiValueField (색인 된 = True, 저장된 = True, model_attr ='entry_tags ')'가 있습니다. 내 진입 모델의 tagfield. 나는 그것을 준비 메서드로 추가하려고했지만 오류가 발생했습니다 -> TypeError : 문자열 서식을 지정할 때 모든 인수가 변환되지 않았습니다. – ratata