Как искать объект в сочетании с соответствующим внешним ключом

У меня есть две модели, как показано ниже. И я хочу искать и получать объекты 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.

Можете ли вы помочь мне понять, как реализовать мое требование поиска по связанной модели?


person user2433077    schedule 29.05.2013    source источник
comment
Попробуйте заполнить необходимые данные внутри txt с помощью цикла for. Это в чем-то та же проблема: stackoverflow.com/questions/5059301/   -  person vladimir.gorea    schedule 08.03.2019