Имам два модела както по-долу. И искам да търся и да получа обектите на марката както по Brand.name, така и по заглавия на артикул, които са свързани с марката.
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.
Използвам haystack 2.0.0beta и whoosh2.4.1.
Можете ли да ми помогнете да разбера как да приложа изискването си за търсене от свързания модел?