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 面向对象 成员的访问约束
Dec 23 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
Python中str.format()详解
Mar 12 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python进行两个表格对比的方法
Jun 27 Python
python 剪切移动文件的实现代码
Aug 02 Python
python画图把时间作为横坐标的方法
Jul 07 Python
python正则-re的用法详解
Jul 28 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
python 如何设置守护进程
Oct 29 Python
python绘制云雨图raincloud plot
Aug 05 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
php DES加密算法实例分析
2019/09/18 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
JavaScript使用cookie
2007/02/02 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
给老师的一封建议书
2014/03/13 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书