Sto aggiungendo la ricerca a un sito Django esistente, usando Haystack con un backrindo Solr. Voglio che la mia ricerca funzioni su diversi modelli e restituisca un singolo insieme di risultati.Risultati di ricerca del pagliaio: come utilizzare modelli diversi per diversi modelli in page.object_list?
Durante l'iterazione dei risultati, mi piacerebbe formattare ogni risultato in base al tipo di modello che è - ad es. se il risultato è una mela, usa un modello di risultato, ma se è arancione, usa un modello diverso.
Finora, sto solo usando una versione leggermente modificata dell'esempio search template. Nel modello, i risultati sono disponibili in 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 %}
Questo non funziona, a quanto pare perché isinstance() non è disponibile all'interno di un modello. Quindi, come posso controllare la logica del modello in base al tipo di modello di un oggetto? C'è un'altra funzione che posso usare all'interno di un modello che fa la stessa cosa?
Suppongo di poter provare vari campi dell'oggetto (if result.object.otherfield_for_orange
) per identificarlo, ma ciò sembra inelegante. Scommetto che questo potrebbe essere fatto con tag modello personalizzati, ma non ho esperienza con quelli.