我正在使用带有 Solr 后端的 Haystack 将搜索添加到现有的 Django 站点。我希望我的搜索能够跨越多个不同的模型,并返回一组结果。
在遍历结果时,我想根据模型类型对每个结果进行格式化——例如,如果结果是 Apple,则使用一个结果模板,但如果是 Orange,则使用不同的模板。
到目前为止,我只是使用了示例搜索模板的略微修改版本。在模板中,结果来自 page.object_list:
{% if page.object_list %}
<ul>
{% for result in page.object_list %}
<li>
{% if (isinstance(result.object, Apple)) %}
Apple: {{ result.object.titlefield_for_apple }}
{% else %}
Orange: {{ result.object.otherfield_for_orange }}
{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
<p>No results found.</p>
{% endif %}
这不起作用,显然是因为 isinstance() 在模板中不可用。那么,如何根据对象的 Model 类型来控制模板逻辑呢?我可以在模板中使用另一个功能来做同样的事情吗?
我想我可以测试对象 ( ) 的各个字段if result.object.otherfield_for_orange
来识别它,但这似乎不优雅。我敢打赌这可以通过自定义模板标签来完成,但我没有这些经验。