我有两种模式:
models.py
class model1 (models.Model):
field1_model1 = models.CharField()
filed2_model1 = models.CharField()
class model2 (models.Model):
field1_model2 = models.ForeignKey(model1)
field2_model2 = models.CharField()
使用Haystack我想基于filed1_model1进行文本搜索,但是当我这样做时,我想在搜索结果中显示filed2_model2。
search_indexes.py以及search.html模板文件中的内容是什么?
答案 0 :(得分:6)
首先,您应该为外键添加相关名称,以便稍后调用。
class Model2(models.Model):
field1_model2 = models.ForeignKey(Model1, related_name='something')
field2_model2 = models.CharField()
然后索引Model1。对于field2_model2,通过获取如下所示的信息来准备数据。
class Model1Index(indexes.SearchIndex):
text = indexes.CharField(document=True, use_template=True)
field1_model1 = indexes.CharField(model_attr='field1_model1', faceted=True)
field2_model2 = indexes.Charfield()
def prepare_field2_model2(self, obj):
return obj.something.field2_model2
site.register(Model1, Model1Index)
在您的search.html中,您将使用{{ result.field1_model1 }}
和{{ result.field2_model2 }}
不要忘记将字段添加到.txt文件中,可能在模板中称为model1_text.txt - >搜索 - >索引 - > APP_NAME。 (或类似的东西)
{{ object.field1_model1 }}
{{ object.field2_model2 }}
然后它应该只是更新架构和重建索引,你应该好好去。