Last active
August 24, 2017 18:19
-
-
Save benzkji/6028c0aea005c480537f557f96a045e2 to your computer and use it in GitHub Desktop.
multilanguage haystack search index, with aldryn_search
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import unicode_literals | |
from aldryn_search.base import AldrynIndexBase | |
from django.template.loader import render_to_string | |
from haystack import indexes | |
from bodenschatz.models import Product | |
class ProductIndex(AldrynIndexBase, indexes.Indexable): | |
text = indexes.NgramField(document=True, use_template=False) | |
title = indexes.NgramField() | |
type = indexes.CharField() | |
montage = indexes.CharField() | |
url = indexes.CharField() | |
def get_model(self): | |
return Product | |
def get_index_queryset(self, language): | |
return self.get_model().objects.published() | |
def prepare_type(self, object): | |
return 'product' | |
def prepare_montage(self, object): | |
return object.montage | |
def get_search_data(self, obj, language, request): | |
context = {'object': obj, } | |
search_text = render_to_string('search/indexes/bodenschatz/product_text.txt', context) | |
return search_text | |
def prepare_fields(self, obj, language, request): | |
# self.prepared_data['language'] = language | |
# translated fields shall be set right here! | |
self.prepared_data['url'] = obj.get_absolute_url() | |
self.prepared_data['title'] = obj.title |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment