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使用range函数计算一组数和的方法
May 07 Python
怎样使用Python脚本日志功能
Aug 14 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
Python做智能家居温湿度报警系统
Sep 25 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
python函数声明和调用定义及原理详解
Dec 02 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
Python configparser模块配置文件过程解析
Mar 03 Python
python简单的三元一次方程求解实例
Apr 02 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中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
解析php类的注册与自动加载
2013/07/05 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
js onload事件不起作用示例分析
2013/10/09 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
python连接数据库的方法
2017/10/19 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
Python 移动光标位置的方法
2019/01/20 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
关于Python作用域自学总结
2019/06/10 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
新浪微博实习心得体会
2014/01/27 职场文书
个人作风建设自查报告
2014/10/22 职场文书
2014年标准化工作总结
2014/12/17 职场文书
会计人员岗位职责
2015/02/03 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android