您的位置:首页 > 编程语言 > Go语言

自定义django的admin后台action

2013-04-01 14:48 232 查看


自定义django的admin后台action

发表回复

django的admin后台管理系统中自带了一个批量删除所选对象的action。



我们还可以添加自定义的action来实现其它类似的功能,如批量修改某个字段的功能。

简单的,例如将文章批量标记为已发布的action,如下,

上诉例子中的action比较简单,执行action时也不需要用户输入,实际上更常见的action是需要用户的输入或选择的。例如一个model A中有个外键foreign key关联另一个model B,我希望能有一个action可以批量更改A关联的B对象。对于这种情况,django官方文档中推荐的做法是重定向至另一个View中,并将所需的item id等作为GET query参数传递过去,在另一个View中处理复杂的逻辑,如让用户输入等。

注意到默认的删除action也是需要用户输入的(确认或取消操作),也有另外的页面,但是这个页面的url确实和原先的共用的,也就是说没有完全像文档中推荐的那样有另外一个View。是怎么做到的呢?

直接上代码吧

batch_update.html如下:

简而言之,就是在action中,首先返回一个用户输入(选择)的页面,此页面包含一个form,此form将submit至原先的url,form中包含_selected_action为用户已选择的id,以及action为用户选择的action名(即模拟原先的页面中form表单中的必须元素)。这时候用户再submit时,可识别出用户已经选择了,此时再执行想要的批量操作即可。

reference

http://www.hoboes.com/Mimsy/hacks/django-actions-their-own-intermediate-page/

django官方文档

本文出自夜惊心的博客,转载请保留出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: