Django给admin添加Action的步骤详解


Posted in Python onMay 01, 2019

前言

django 的 admin 是个非常方便的admin portal,可以根据自己的需要重写.

在使用Django自带的admin后台的时候,他提供了一些默认的指令可以对数据进行操作, 比如批量删除,修改等

Django给admin添加Action的步骤详解

同样的我们也可以添加自己的指令。

更多更详细请看官方文档:https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

创建一个Django项目

$ django-admin startproject DjangoActions
$ cd DjangoActions
$ python3 manage.py startapp mysite

添加model

打开mysite下的models.py

from django.db import models


class Article(models.Model):
 # 文章状态,类似枚举
 STATUS_CHOICES = (
  ('d', '草稿'),
  ('p', '发布'),
 )
 # 标题
 title = models.CharField(max_length=30)
 # 内容
 body = models.TextField()
 # 状态
 status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='d')

 def __str__(self):
  return self.title

将Article注册到admin

打开mysite下的admin.py

from django.contrib import admin
from .models import Article


# 指令处理函数,参数固定写法
def make_article_published(modeladmin, request, queryset):
 # queryset 是从数据库查询到的model set
 # 更新status状态为p,在此处就是Article
 queryset.update(status='p')


# 此指令的名称
make_article_published.short_description = '更改状态为发布'


#将Article注册到后台
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
 # 后台列表展示的字段
 list_display = ('title', 'status')
 # 动作集合
 actions = [make_article_published]

启动服务

1.首先同步数据库

$ python3 manage.py makemigrations
$ python3 manage.py migrate

2.创建超级用户

$ python3 manage.py createsuperuser

按照提示操作即可

3.启动服务

$ python3 manage.py runserver

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python网络编程学习笔记(三):socket网络服务器
Jun 09 Python
Python切片索引用法示例
May 15 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
python+mysql实现学生信息查询系统
Feb 21 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python 求数组局部最大值的实例
Nov 26 Python
python实现双色球随机选号
Jan 01 Python
Python configparser模块应用过程解析
Aug 14 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 Python
Django重置migrations文件的方法步骤
May 01 #Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 #Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 #Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 #Python
python实现定时压缩指定文件夹发送邮件
Dec 22 #Python
python定时复制远程文件夹中所有文件
Apr 30 #Python
python实现图片转字符小工具
Apr 30 #Python
You might like
thinkphp常见路径用法分析
2014/12/02 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
用js重建星际争霸
2006/12/22 Javascript
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
python实现telnet客户端的方法
2015/04/15 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
pytorch 模型可视化的例子
2019/08/17 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
keras topN显示,自编写代码案例
2020/07/03 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
节约用水的口号
2014/06/20 职场文书