ava*_*tar 7 django solr django-models django-haystack
我有两个型号:
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()
Run Code Online (Sandbox Code Playgroud)
使用Haystack我想基于filed1_model1进行文本搜索,但是当我这样做时,我想在搜索结果中显示filed2_model2.
search_indexes.py以及search.html模板文件中的内容是什么?
首先,您应该为外键添加相关名称,以便稍后调用.
class Model2(models.Model):
field1_model2 = models.ForeignKey(Model1, related_name='something')
field2_model2 = models.CharField()
Run Code Online (Sandbox Code Playgroud)
然后索引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)
Run Code Online (Sandbox Code Playgroud)
在您的search.html中,您将使用{{ result.field1_model1 }}和显示数据{{ result.field2_model2 }}
不要忘记将字段添加到.txt文件中,可能在模板 - >搜索 - >索引 - > app_name中称为model1_text.txt.(或类似的东西)
{{ object.field1_model1 }}
{{ object.field2_model2 }}
Run Code Online (Sandbox Code Playgroud)
然后它应该只是更新架构和重建索引的问题,你应该很高兴.
| 归档时间: |
|
| 查看次数: |
3529 次 |
| 最近记录: |