Более одного индексного поля в self.prepared_data - PullRequest
1 голос
/ 22 марта 2012

Я использую Haystack и Whoosh с Django, и я пытался создать индексы с помощью кода ниже:

class LivroIndex(SearchIndex):
    text = CharField(document=True, use_template=True)
    autor = CharField(model_attr='Autor')
    titulo =  CharField(model_attr='Titulo')
    datalivro = DateTimeField(model_attr='DataLivro')


    def index_queryset(self):
        return Livro.objects.filter(DataLivro__lte=datetime.datetime.now())


    def prepare(self, obj):
        self.prepared_data = super(LivroIndex, self).prepare(obj)
        self.prepared_data['text'] = obj.Autor
        return self.prepared_data

Livro - это класс в моем файле моделей.

Inтаким образом, вы можете использовать только «автора» в качестве поля, которое пользователи могут использовать для поиска контента внутри приложения.Есть ли другие способы заставить его принимать более одного поля?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 22 марта 2012

используйте шаблон и добавьте, какие поля вы хотите найти в поиске

как

{{ object.autor }}
{{ object.titulo  }}
{{ object.datalivro }}
0 голосов
/ 22 марта 2012

Вы должны объединить все поля, по которым хотите выполнить поиск, в поле text.Обычно вы делаете это через шаблон, а не через метод prepare.См. учебник для инструкций.

...