Django学习笔记之为Model添加Action


Posted in Python onApril 30, 2019

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

|- Django版本:1.8

|- Python版本:3.4

models.py

class Story(models.Model):

#编辑Story状态
  STATUS_CHOICES = (
    (1, '待编辑状态'),
    (2, '待批准状态'),
    (3, '已发布状态'),
    (4, '已存档'),
  )


  title = models.CharField(max_length=100, verbose_name=u'文章')
  slug = models.SlugField(verbose_name=u'简短标题')
  category =models.ForeignKey(Category, verbose_name=u'分类')
  owner = models.ForeignKey(User, verbose_name=u'发布者')
  status = models.IntegerField(choices=STATUS_CHOICES, default=1, verbose_name=u'发布状态')

  
  class Meta:
      ordering = ['modified','created']
      verbose_name_plural = verbose_name = '文章'


  def __str__(self):
    return self.title

admin.py

class StoryAdmin(admin.ModelAdmin):
  list_display = ('title', 'owner', 'status', 'created', 'modified','read_times','top', 'id')
  search_fields = ('title', 'markdown_content')
  # 状态选择器
  list_filter = ('status', 'owner', 'created', 'modified',)
  prepopulated_fields = {'slug': ('title',)}
  actions = ['make_story_public']

  def make_story_public(self, request, queryset):
    # queryset参数为选中的Story对象
    rows_updated = queryset.update(status=3)
    message_bit = "%s 篇文章" % rows_updated
    self.message_user(request, "%s 已成功标记为已发布状态." % message_bit)
  make_story_public.short_description = u'修改选中文章为已发布状态'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python常见工厂函数用法示例
Mar 21 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python爬虫实现中英翻译词典
Jun 25 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
pytorch的batch normalize使用详解
Jan 15 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
Python Opencv实现图像轮廓识别功能
Mar 23 #Python
python opencv实现图像边缘检测
Apr 29 #Python
Python Django给admin添加Action的方法实例详解
Apr 29 #Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 #Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 #Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 #Python
详解【python】str与json类型转换
Apr 29 #Python
You might like
网页上facebook分享功能具体实现
2014/01/26 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
PHP检测用户语言的方法
2015/06/15 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
高三政治教学反思
2014/02/06 职场文书
小区文明倡议书
2014/05/16 职场文书
实习公司领导推荐函
2014/05/21 职场文书
教代会闭幕词
2015/01/28 职场文书
如何在Python项目中引入日志
2021/05/31 Python