У меня есть две модели, как показано ниже. И я хочу искать и получать объекты Brand как по Brand.name, так и по заголовкам Item, которые связаны с Brand.
class Brand(models.Model):
name = models.CharField()
class Item(models.Model):
title = models.CharField()
brand = models.ForeignKey(Brand)
Затем создал поисковый индекс, как показано ниже:
from models import Brand
from haystack import indexes
class BrandIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name')
itemtitles = indexes.MultiValueField()
def get_model(self):
return Brand
def prepare_itemtitles(self, obj):
return [one['title'] for one in obj.item_set.values('title')]
Конечно, я добавил имена объектов в txt как:
{{ object.name }}
{{ object.itemtitles }}
Но мне не удалось найти бренд по ключевым словам в названиях товаров. Я напечатал содержимое «prepare_itemtitles» для каждого объекта «Бренд» — без проблем. И его можно было искать по Brand.name.
Я использую стог сена 2.0.0бета и whoosh2.4.1.
Можете ли вы помочь мне понять, как реализовать мое требование поиска по связанной модели?