Как да търсите обект, комбинирайки със свързан външен ключ

Имам два модела както по-долу. И искам да търся и да получа обектите на марката както по 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.

Можете ли да ми помогнете да разбера как да приложа изискването си за търсене от свързания модел?


person user2433077    schedule 29.05.2013    source източник
comment
Опитайте да попълните необходимите данни в txt с for цикъл. Това донякъде е същият проблем: stackoverflow.com/questions/5059301/   -  person vladimir.gorea    schedule 08.03.2019