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实现爬虫下载美女图片
Jul 14 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
Python计算信息熵实例
Jun 18 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
django前端页面下拉选择框默认值设置方式
Aug 09 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
javascript 写类方式之四
2009/07/05 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
js微信分享实现代码
2020/10/11 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
python实现维吉尼亚加密法
2019/03/20 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
身边的榜样活动方案
2014/08/20 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
建筑工地文明标语
2014/10/09 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
大学生创业事迹材料
2014/12/30 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
小学感恩主题班会
2015/08/12 职场文书
2016年母亲节广告语
2016/01/28 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL