Django管理员:如何将“保存”按钮添加到列表视图顶部

时间:2018-10-30 22:46:22

标签: django django-admin

当存在列表可编辑字段时,“保存”按钮将显示在Django管理员列表视图的底部。 (在图片中用红色框围住)。 enter image description here

如何在顶部也添加相同的“保存”按钮? (预期结果在图片中被绿色框包围。)

对于对象更改视图,Django提供了一个简单的解决方案,但列表视图似乎没有内置选项。

2 个答案:

答案 0 :(得分:1)

这可以通过JavaScript轻松完成。

首先,我们需要一个JS函数,该函数将从页面底部找到“保存”按钮行,并在顶部插入一个副本。就我而言,它位于static/common/js/save-buttons-to-list-view-top.js中。

'use strict'
var $ = django.jQuery

$(document).ready(function () {
  var saveButtonRow = $('.paginator')[0]
  var resultsDiv = $('#changelist-form > div.results')[0]

  if (saveButtonRow && resultsDiv) {
    $(saveButtonRow).clone().insertBefore(resultsDiv);
  }
})

此脚本需要通过覆盖change_list.html模板而添加到所有管理员更改列表视图中。

创建具有以下内容的文件templates/admin/change_list.html

{% extends 'admin/change_list.html' %}
{% block extrahead %}
{{ block.super }}
<script type="text/javascript" src="/static/media/common/js/save-buttons-to-list-view-top.js"></script>
{% endblock %}

要执行此操作,请检查您是否在settings.py中配置了模板选项:

TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': True,
        ...
    }
]

答案 1 :(得分:-1)

仅供参考。有一个选项ModelAdmin.save_on_top(docs