如何搜索与相关外键组合的对象

时间:2013-05-29 15:33:38

标签: django foreign-key-relationship django-haystack whoosh

我有两个型号如下。我想通过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 }}

但我没有通过itemtitles中的关键字进行品牌搜索。 我为每个Brand对象打印了“prepare_itemtitles”的内容,没问题。 它可以通过Brand.name进行搜索。

我正在使用haystack 2.0.0beta和whoosh2.4.1。

您能帮助我了解如何实现我从相关模型中搜索的要求吗?

0 个答案:

没有答案