【发布时间】:2019-04-04 01:32:02
【问题描述】:
当有列表可编辑字段时,保存按钮会出现在 Django 管理列表视图的底部。 (图中用红框包围)。
如何将相同的保存按钮也添加到顶部? (预期结果在图中用绿色框包围。)
对于对象更改视图,Django 提供了一个简单的解决方案,但列表视图似乎没有内置选项。
【问题讨论】:
标签: django django-admin
当有列表可编辑字段时,保存按钮会出现在 Django 管理列表视图的底部。 (图中用红框包围)。
如何将相同的保存按钮也添加到顶部? (预期结果在图中用绿色框包围。)
对于对象更改视图,Django 提供了一个简单的解决方案,但列表视图似乎没有内置选项。
【问题讨论】:
标签: django django-admin
这可以通过 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,
...
}
]
【讨论】:
仅供参考。有选项 ModelAdmin.save_on_top (docs)
【讨论】: