Je sais que cette question est ancienne, mais à partir d'aujourd'hui (Django 1.9), les éléments d'histoire de Django sont plus robustes qu'ils ne l'étaient à la date de cette question. Dans un projet en cours, j'avais besoin d'obtenir les éléments d'historique récents et de les placer dans une liste déroulante à partir de la barre de navigation. Voici comment je l'ai fait et c'était très simple:
*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})
Comme on le voit dans l'extrait de code ci-dessus, je crée un jeu de requêtes de base à partir du modèle LogEntry (django.contrib.admin.models.py est l'endroit où il se trouve dans django 1.9) et exclut les éléments où aucun changement n'est impliqué, en le triant par le temps d'action et ne montrant que les 20 derniers journaux. Je reçois également un autre article avec juste le décompte. Si vous regardez le modèle LogEntry, vous pouvez voir les noms de champs que Django a utilisés pour récupérer les données dont vous avez besoin. Pour mon cas spécifique, voici ce que j'ai utilisé dans mon modèle:
Lien vers l'image du produit 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>