Я добавляю поиск на существующий сайт Django, используя Haystack с бэкэндом Solr. Я хочу, чтобы мой поиск работал с несколькими разными моделями и возвращал один набор результатов.
При повторении результатов я хотел бы отформатировать каждый результат в зависимости от типа модели, например. если результатом является Apple, используйте один шаблон результата, но если он оранжевый, используйте другой шаблон.
До сих пор я просто использовал слегка измененную версию примера шаблон поиска. В шаблоне результаты заносятся в 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() недоступен внутри шаблона. Итак, как я могу управлять шаблонной логикой на основе типа модели объекта? Есть ли другая функция, которую я могу использовать внутри шаблона, который делает то же самое?
Я предполагаю, что могу проверить различные поля объекта (if result.object.otherfield_for_orange
), чтобы идентифицировать его, но это кажется неэлегантным. Бьюсь об заклад, это можно сделать с помощью настраиваемых тегов шаблонов, но у меня нет опыта с ними.