ฉันรู้ว่าคำถามนี้เก่า แต่ ณ วันนี้ (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>