मुझे पता है कि यह प्रश्न पुराना है, लेकिन आज (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>