我有两个模型如下。我想通过 Brand.name 和与 Brand 相关的 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 }}
但我未能通过 itemtitles 中的关键字搜索品牌。我为每个 Brand 对象打印了“prepare_itemtitles”的内容,没问题。并且可以通过 Brand.name 进行搜索。
我正在使用 haystack 2.0.0beta 和 whoosh2.4.1。
你能帮我理解如何实现我从相关模型中搜索的要求吗?