django xadmin中action的使用
由于业务需求需要在模型类中批量修改某些属性,或批量执行某个方法, 采用 xadmin 中提供的 action 方法完美解决该问题:
action 使用如下:
# xadmin.py 中
from .model import User
from django.http import HttpResponseRedirect
from xadmin.plugins.actions import BaseActionView
from mesh_service_xadmin.apps.service.tasks import krpano
class PanoAction(BaseActionView):
action_name = 'krpano image'
model_perm = 'change'
description = '使用 krpano 切割图片'
def do_action(self, queryset):
for obj in queryset:
user_id = obj.id
username = obj.username
# celery 异步调用
pano.delay(user_id, username)
# 返回或者不返回 HttpResponse对象都可以,如果不返回的话默认是重定向到原本页面
msg = "置为‘是’修改成功 "
self.message_user(msg, 'success') #这里的值默认是info,还有warning和error
return HttpResponseRedirect(self.request.get_full_path()) #重定向到原本请求的页面
class UserModelAdmin(object):
list_display = ['id', 'username']
list_editab