So che questa domanda è vecchia, ma ad oggi (Django 1.9), gli elementi della storia di Django sono più robusti di quanto non fossero alla data di questa domanda. In un progetto in corso, avevo bisogno di ottenere gli elementi della cronologia recente e inserirli in un menu a discesa dalla barra di navigazione. Ecco come l'ho fatto ed è stato molto semplice:
*views.py*
from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION
def main(request, template):
logs = LogEntry.objects.exclude(change_message="No fields changed.").order_by('-action_time')[:20]
logCount = LogEntry.objects.exclude(change_message="No fields changed.").order_by('-action_time')[:20].count()
return render(request, template, {"logs":logs, "logCount":logCount})
Come si vede nello snippet di codice sopra, sto creando un set di query di base dal modello LogEntry (django.contrib.admin.models.py è dove si trova in django 1.9) ed escludendo gli elementi in cui non sono coinvolte modifiche, ordinandolo per il tempo di azione e mostrando solo gli ultimi 20 log. Ricevo anche un altro oggetto con solo il conteggio. Se guardi il modello LogEntry, puoi vedere i nomi dei campi che Django ha utilizzato per recuperare i dati di cui hai bisogno. Per il mio caso specifico, ecco cosa ho usato nel mio modello:
Collegamento all'immagine del prodotto finale
*template.html*
<ul class="dropdown-menu">
<li class="external">
<h3><span class="bold">{{ logCount }}</span> Notification(s) </h3>
<a href="{% url 'index' %}"> View All </a>
</li>
{% if logs %}
<ul class="dropdown-menu-list scroller actionlist" data-handle-color="#637283" style="height: 250px;">
{% for log in logs %}
<li>
<a href="javascript:;">
<span class="time">{{ log.action_time|date:"m/d/Y - g:ia" }} </span>
<span class="details">
{% if log.action_flag == 1 %}
<span class="label label-sm label-icon label-success">
<i class="fa fa-plus"></i>
</span>
{% elif log.action_flag == 2 %}
<span class="label label-sm label-icon label-info">
<i class="fa fa-edit"></i>
</span>
{% elif log.action_flag == 3 %}
<span class="label label-sm label-icon label-danger">
<i class="fa fa-minus"></i>
</span>
{% endif %}
{{ log.content_type|capfirst }}: {{ log }}
</span>
</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>{% trans "This object doesn't have a change history. It probably wasn't added via this admin site." %}</p>
{% endif %}
</li>
</ul>