干草堆索引相关模型问题

时间:2014-01-02 08:06:10

标签: django indexing django-haystack

我想为两个模型准备索引,因此我可以从两个模型中搜索文本。以下是我的代码。当我运行“python manage.py rebuild_index”时,我得到索引行“return obj.mainparts.parts”的错误“raise self.related.model.DoesNotExist”。

models.py

class Main(models.Model):
    ....#various fields

class Parts(models.Model):
    main = models.OneToOneField(Main, primary_key=True, related_name='mainparts')
    parts = models.TextField(blank=True)

search_indexes.py

class MainIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    ....#various fields from class Main
    parts = indexes.CharField()

    def prepare_parts(self, obj):
        return obj.mainparts.parts

    def get_model(self):
        return Main

和main_text.txt:

{{ object.parts}}

1 个答案:

答案 0 :(得分:1)

self.related.model.DoesNotExist表示在错误发生时haystack正在索引的Parts对象没有Main个实例。您可以捕获异常,并在这种情况下返回一个空字符串""

# ...
def prepare_parts(self, obj):
    try:
        return obj.mainparts.parts
    except Parts.DoesNotExist:
        return ""
# ...