Bu sorunun eski olduğunu biliyorum, ancak bugün itibariyle (Django 1.9), Django'nun geçmiş öğeleri bu sorunun tarihinde olduğundan daha sağlam. Mevcut bir projede, yakın geçmiş öğelerini almam ve onları gezinme çubuğundan bir açılır listeye koymam gerekiyordu. Ben böyle yaptım ve çok açık sözlüydü:
*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})
Yukarıdaki kod parçacığında görüldüğü gibi, LogEntry modelinden (django.contrib.admin.models.py, django 1.9'da bulunduğu yerdir) temel bir sorgu kümesi oluşturuyorum ve hiçbir değişiklik içermeyen öğeleri hariç tutarak, eylem süresi ve yalnızca son 20 günlüğü gösterir. Ayrıca sadece sayımla başka bir öğe alıyorum. LogEntry modeline bakarsanız, Django'nun ihtiyaç duyduğunuz veri parçalarını geri çekmek için kullandığı alan adlarını görebilirsiniz. Benim özel durumum için, şablonumda kullandım:
Nihai Ürün Görseline Bağlantı
*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>