Я знаю, що це питання давнє, але станом на сьогодні (Django 1.9), елементи історії Django є більш надійними, ніж вони були на дату цього запитання. У поточному проекті мені потрібно було отримати останні елементи історії та помістити їх у випадаюче меню з панелі навігації. Ось як я це зробив і був дуже прямим:
*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})
Як видно з наведеного вище фрагмента коду, я створюю базовий набір запитів із моделі LogEntry (django.contrib.admin.models.py - це те місце, де він знаходиться в django 1.9), і виключаю елементи, в яких не задіяні зміни, упорядковуючи це за час дії та відображаються лише останні 20 журналів. Я також отримую ще один предмет із лише підрахунком. Якщо ви подивитесь на модель LogEntry, ви зможете побачити імена полів, які Django використав для того, щоб повернути назад потрібні вам дані. Для мого конкретного випадку ось що я використав у своєму шаблоні:
Посилання на зображення кінцевого продукту
*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>