Django Admin后台模型列表页面如何添加自定义操作按钮


Posted in Python onNovember 11, 2020

你需要添加两个按钮:一个按钮使所有英雄都可以死亡,而另一个按钮使所有英雄永生。由于它会影响所有英雄,而与选择无关,因此这需要一个单独的按钮,而不是操作下拉菜单。

首先,我们要更改HeroAdmin管理模型使用的模板文件,以便我们可以添加两个按钮:

@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
  change_list_template = "entities/heroes_changelist.html"

然后,我们需要覆盖get_urls方法,并在管理模型上添加set_immortal和set_mortal方法。它们将用作两种view视图:

def get_urls(self):
  urls = super().get_urls()
  my_urls = [
    path('immortal/', self.set_immortal),
    path('mortal/', self.set_mortal),
  ]
  return my_urls + urls
def set_immortal(self, request):
  self.model.objects.all().update(is_immortal=True)
  self.message_user(request, "All heroes are now immortal")
  return HttpResponseRedirect("../")
def set_mortal(self, request):
  self.model.objects.all().update(is_immortal=False)
  self.message_user(request, "All heroes are now mortal")
  return HttpResponseRedirect("../")

最后,我们通过扩展admin/change_list.html来创建模板文件entities/heroes_changelist.html:

{% extends 'admin/change_list.html' %}
{% block object-tools %}
  <div>
    <form action="immortal/" method="POST">
      {% csrf_token %}
        <button type="submit">Make Immortal</button>
    </form>
    <form action="mortal/" method="POST">
      {% csrf_token %}
        <button type="submit">Make Mortal</button>
    </form>
  </div>
  <br />
  {{ block.super }}
{% endblock %}

Django Admin后台模型列表页面如何添加自定义操作按钮

在点击页面的make_mortal动作后,英雄全都可以死亡,你会看到如下消息提示。

Django Admin后台模型列表页面如何添加自定义操作按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
玩转python爬虫之cookie使用方法
Feb 17 Python
Python绘制七段数码管实例代码
Dec 20 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
值得收藏,Python 开发中的高级技巧
Nov 23 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
wxPython多个窗口的基本结构
Nov 19 Python
tensorflow使用指定gpu的方法
Feb 04 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
Python使用pdb调试代码的技巧
May 03 Python
django form和field具体方法和属性说明
Jul 09 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
python实现股票历史数据可视化分析案例
Jun 10 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 #Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 #Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 #Python
Django自定义YamlField实现过程解析
Nov 11 #Python
Python监听剪切板实现方法代码实例
Nov 11 #Python
如何通过python计算圆周率PI
Nov 11 #Python
python中turtle库的简单使用教程
Nov 11 #Python
You might like
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
php 购物车的例子
2009/05/04 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
javascript import css实例代码
2008/07/18 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
python选择排序算法的实现代码
2013/11/21 Python
Python中的tuple元组详细介绍
2015/02/02 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
python实现发送邮件功能代码
2017/12/14 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
python pygame实现方向键控制小球
2019/05/17 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
SQL语言面试题
2013/08/27 面试题
生物化工工艺专业应届生求职信
2013/10/08 职场文书
监理员的岗位职责
2013/11/13 职场文书
教学实验楼管理制度
2014/02/01 职场文书
2014年销售部工作总结
2014/12/01 职场文书
合作意向协议书
2015/01/29 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书