我想为两个模型准备索引,因此我可以从两个模型中搜索文本。以下是我的代码。当我运行“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}}
答案 0 :(得分:1)
self.related.model.DoesNotExist
表示在错误发生时haystack正在索引的Parts
对象没有Main
个实例。您可以捕获异常,并在这种情况下返回一个空字符串""
:
# ...
def prepare_parts(self, obj):
try:
return obj.mainparts.parts
except Parts.DoesNotExist:
return ""
# ...