【问题标题】:Can I display last actions of everyone in the Django Admin index?我可以在 Django 管理索引中显示每个人的最后操作吗?
【发布时间】:2014-03-12 21:19:20
【问题描述】:

有没有办法显示在 Django 管理中所做的每一个最后的操作?默认情况下,管理员仅显示当前用户的最后操作,但我想查看每个管理员的最后操作。由于我的项目中没有此页面的任何代码,我该如何与此小部件进行交互?我应该覆盖整个索引吗?

我想得到这样的东西:

如果我以er**** 连接(根据屏幕),而不仅仅是前两个条目。

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    是的,是的。 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 %}
    

    【讨论】:

      【解决方案2】:

      这在 django 1.9 上很容易覆盖:

      在加载管理界面的主urls.py中(使用admin.autodiscover()),覆盖管理索引模板文件的名称:

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

      然后在任何应用程序的模板目录中创建文件admin\my_custom_index.html(例如\my_app\templates\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 的答案中的版本更新。

      【讨论】:

        猜你喜欢
        • 2011-09-08
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 2018-11-26
        • 1970-01-01
        • 2020-07-09
        • 2021-05-04
        • 1970-01-01
        相关资源
        最近更新 更多