Wiem, że to pytanie jest stare, ale na dzień dzisiejszy (Django 1.9) elementy historii Django są bardziej solidne niż były w dniu tego pytania. W bieżącym projekcie musiałem pobrać ostatnie elementy historii i umieścić je na liście rozwijanej na pasku nawigacyjnym. Tak to zrobiłem i było bardzo proste:
*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})
Jak widać na powyższym fragmencie kodu, tworzę podstawowy zestaw zapytań z modelu LogEntry (django.contrib.admin.models.py jest tam, gdzie znajduje się w django 1.9) i wykluczam elementy, w których nie są wprowadzane żadne zmiany, zamawiając go przez czas działania i pokazanie tylko ostatnich 20 dzienników. Otrzymuję też kolejny przedmiot z samą liczbą. Jeśli spojrzysz na model LogEntry, zobaczysz nazwy pól, których Django użył do wycofania potrzebnych fragmentów danych. W moim konkretnym przypadku oto, czego użyłem w moim szablonie:
Link do zdjęcia produktu końcowego
*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>