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 相关文章推荐
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python自动生产表情包
Mar 17 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
python3正则提取字符串里的中文实例
Jan 31 Python
python开启debug模式的方法
Jun 27 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
Python 操作SQLite数据库的示例
Oct 16 Python
在Python中如何使用yield
Jun 07 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面向对象编程快速入门
2006/12/14 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
利用php生成验证码
2017/02/23 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
一份python入门应该看的学习资料
2018/04/11 Python
python zip()函数使用方法解析
2019/10/31 Python
Python高级property属性用法实例分析
2019/11/19 Python
Python 支持向量机分类器的实现
2020/01/15 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
大学生个人自荐信样本
2014/03/02 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
求职简历自我评价2015
2015/03/10 职场文书
redis中lua脚本使用教程
2021/11/01 Redis