2014-03-12 15 views
3

有沒有辦法顯示在Django管理員中進行的每個最後操作?默認情況下,管理員只顯示當前用戶的最後一個操作,但我希望看到每個管理員的最後一個操作。由於我的項目中沒有此頁面的任何代碼,我該如何與此小部件交互?我應該重寫整個索引嗎?我可以在Django Admin索引中顯示每個人的最後一個動作嗎?

我希望得到的東西是這樣的:

Result expected in the admin interface

而不只是第2項的,如果我(根據屏幕)連爲er****

回答

6

是的。通過覆蓋模板,Django管理員中的所有內容都可以定製爲。所有你需要的是覆蓋文件templates/admin/index.html of your current Django version和改變這一行:

{% get_admin_log 10 as admin_log for_user user %} 

並取出for_user user部分。它將顯示最近10次最近的操作,不需要用戶過濾。爲了完美,您還需要更改塊的名稱並添加操作作者。側邊欄塊應該是這樣的:

{% block sidebar %} 
<div id="content-related"> 
    <div class="module" id="recent-actions-module"> 
     <h2>{% trans 'Recent Actions' %}</h2> 
     <h3>{% trans 'Last Actions' %}</h3>    {# Title modified #} 
      {% load log %} 
      {% get_admin_log 10 as admin_log %}   {# No more filtering #} 
      {% if not admin_log %} 
      <p>{% trans 'None available' %}</p> 
      {% else %} 
      <ul class="actionlist"> 
      {% for entry in admin_log %} 
      <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}"> 
       {% if entry.is_deletion or not entry.get_admin_url %} 
        {{ entry.object_repr }} 
       {% else %} 
        <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a> 
       {% endif %} 
       <br/> 
       {% if entry.content_type %} 
        {# Add the author here, at the end #} 
        <span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}, by {{ entry.user }}</span>  
       {% else %} 
        <span class="mini quiet">{% trans 'Unknown content' %}</span> 
       {% endif %} 
      </li> 
      {% endfor %} 
      </ul> 
      {% endif %} 
    </div> 
</div> 
{% endblock %} 
1

這是很容易凌駕於Django的1.9:

在你的主人urls.py在管理界面加載(與admin.autodiscover()),覆蓋管理員的名稱指數模板文件:

from django.contrib import admin 
admin.site.index_template = 'admin/my_custom_index.html' 
admin.autodiscover() 

然後創建任何應用程序的模板目錄(如\my_app\templates\admin\my_custom_index.html)內的文件admin\my_custom_index.html。它可以延長現有的模板,所以並不需要成爲一個漫長的:

{% extends "admin/index.html" %} 
{% load i18n static %} 

{% block sidebar %} 
<div id="content-related"> 
    <div class="module" id="recent-actions-module"> 
     <h2>{% trans 'Recent actions' %}</h2> 
     <h3>{% trans 'All users' %}</h3> 
      {% load log %} 
      {% get_admin_log 30 as admin_log %} 
      {% if not admin_log %} 
      <p>{% trans 'None available' %}</p> 
      {% else %} 
      <ul class="actionlist"> 
      {% for entry in admin_log %} 
      <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}"> 
       {% if entry.is_deletion or not entry.get_admin_url %} 
        {{ entry.object_repr }} 
       {% else %} 
        <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a> 
       {% endif %} 
       <br/> 
       {% if entry.content_type %} 
        <span class="mini quiet">{% filter capfirst %}{{ entry.content_type }}{% endfilter %}, by {{ entry.user }}</span> 
       {% else %} 
        <span class="mini quiet">{% trans 'Unknown content' %}</span> 
       {% endif %} 
      </li> 
      {% endfor %} 
      </ul> 
      {% endif %} 
    </div> 
</div> 
{% endblock %} 

塊多年來Django的變化了,這裏的版本是比Maximime的答案更新。

相關問題