Sé que esta pregunta es antigua, pero a partir de hoy (Django 1.9), los elementos del historial de Django son más sólidos de lo que eran en la fecha de esta pregunta. En un proyecto actual, necesitaba obtener los elementos del historial reciente y colocarlos en un menú desplegable de la barra de navegación. Así es como lo hice y fue muy sencillo:
*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})
Como se ve en el fragmento de código anterior, estoy creando un conjunto de consultas básico desde el modelo LogEntry (django.contrib.admin.models.py es donde se encuentra en django 1.9) y excluyendo los elementos donde no hay cambios involucrados, ordenándolos por el tiempo de acción y solo muestra los últimos 20 registros. También obtengo otro artículo con solo el recuento. Si observa el modelo LogEntry, puede ver los nombres de campo que Django ha utilizado para extraer los datos que necesita. Para mi caso específico, esto es lo que usé en mi plantilla:
Enlace a la imagen del producto final
*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>