3

我正在尝试让 django-haystack(使用 xapian 后端)通过nameanddescription字段在此处索引我的模型以进行搜索。

我有一个 , 的子类ItemDevice它添加了一个manufacturer字段。

Item模型是这样定义的:

class Item(models.Model):
    name = models.CharField(max_length=255, unique=True)
    description = models.TextField(null=True, blank=True)
    compatible_with = models.ManyToManyField('self', null=True, blank=True)
    often_with = models.ManyToManyField('self', null=True, blank=True)
    created_by = models.ForeignKey(User, null=True, blank=True, related_name='created_by')
    verified = models.BooleanField(default=False)
    verified_by = models.ForeignKey(User, null=True, blank=True, related_name='verified_by')
    date_created = models.DateField(auto_now_add=True)
    slug = models.SlugField(max_length=300, null=True, blank=True)

我的 django-haystack 子类SearchIndex如下所示:

class ItemIndex(SearchIndex):
    text = CharField(document=True, use_template=True)
    name = CharField(model_attr='name')
    description = CharField(model_attr='description')

site.register(Item, ItemIndex)

我已经设置了这个模板,在templates/search/indexes/catalog/item_text.txt

{{ object.name }}
{{ object.description }}

当且item_text.txtmanufacturer当模型对象是Device?

4

1 回答 1

3
{% if device.manufacturer %}
{{ device.manufacturer }}
{% endif %}

... Haystack 教程在这个主题上有点令人困惑(您实际上不必使用文本文件模板),但基本思想是 Haystack 的引擎会根据该模板中的任何文本数据进行处理.

...实际上,它会根据您发送的响应中的任何内容进入城镇,但是如果您已经设置了模板,则可以在其中使用您想要的任何 Django 模板逻辑。

(请注意,在ifDjango 1.2 之前,模板标签有点像狗的早餐;如果您卡在较早的 Django 版本上,您可能需要调整语法,但原理是一样的。)

于 2010-10-16T13:08:01.930 回答