4
有沒有人用乾草堆使用Django taggit?我們如何通過乾草堆使標籤字段可索引?Django Haystack和Taggit
我曾嘗試:
class EventIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(model_attr='descr_en', document=True, use_template=True)
text_tr = indexes.CharField(model_attr='descr_tr')
tags = indexes.MultiValueField()
def prepare_text(self, obj):
return '%s %s' % (obj.title_en, obj.descr_en)
def prepare_text_tr(self, obj):
return '%s %s' % (obj.title_tr, obj.descr_tr)
def prepare_tags(self, obj):
return [tag.name for tag in obj.tags.all()]
def get_model(self):
return Event
,我使用了多語種搜索的自定義searchqueryset:
class MlSearchQuerySet(SearchQuerySet):
def filter(self, **kwargs):
"""Narrows the search based on certain attributes and the default operator."""
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)
我已更新我的問題,以更好地表示我的真實代碼結構。因爲我沒有使用您建議的方式獲取任何與標籤相關的搜索結果... – ratata
您能否包含您的文本模板?如果你的標籤在那裏,他們應該被索引,他們將被視爲與你的模板中的任何其他內容相同。 –
in'event_text.txt'我有:{{object.title}} {{object.descr}} {%for object in object.tags.all%} {{tag.name}} {%endfor%} – ratata