Saya tahu pertanyaan ini sudah tua, tetapi mulai hari ini (Django 1.9), item sejarah Django lebih kuat daripada pada tanggal pertanyaan ini. Dalam proyek saat ini, saya perlu mendapatkan item sejarah terbaru dan memasukkannya ke dalam menu dropdown dari bilah navigasi. Beginilah cara saya melakukannya dan sangat jujur:
*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})
Seperti yang terlihat pada potongan kode di atas, saya membuat queryset dasar dari model LogEntry (django.contrib.admin.models.py adalah tempatnya di django 1.9) dan mengecualikan item di mana tidak ada perubahan yang terlibat, memesannya dengan waktu tindakan dan hanya menampilkan 20 log terakhir. Saya juga mendapatkan item lain hanya dengan hitungan. Jika Anda melihat pada model LogEntry, Anda dapat melihat nama bidang yang telah digunakan Django untuk menarik kembali potongan data yang Anda butuhkan. Untuk kasus khusus saya, inilah yang saya gunakan di template saya:
Tautan ke Gambar Produk Akhir
*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>