action批量处理功能
用户可以自定义批量处理功能,但是默认的有批量删除功能.
***思路***
1,定义一个列表用来装action的类名并extend用户自定义列表
2.循环该列表获取到函数名(用于执行)和方法名用于展示
3.post提交,(selected_id是几个checkbox)(actions是类名)判断actions提交的是什么方法,就执行该方法.
############ class ModelStark(object): actions=[] def get_actions_dict(self): temp=[] for item in self.config.new_actions: item_name = item.__name__ item_desc=getattr(item,'desc',item_name.replace('_',' ')) action_dict={ "name":item_name, "desc":item_desc, } temp.append(action_dict) return temp @property def new_actions(self): temp=[ModelStark.actions_delete] temp.extend(self.actions) return temp def show_list(self,request): '''展示页面''' # self--->stark_class_obj--->每一个单独的配置类. if request.method=='POST': actions = request.POST.get('actions') if actions: selected_id=request.POST.getlist('selected_id') queryset=self.model.objects.filter(id__in=selected_id) actions_func=getattr(self,actions) actions_func(request,queryset) ######前端######## <select name="actions" style="padding: 8px 10px"> <option value="">----------</option> {% for item in showlist.get_actions_dict %} <option value="{{ item.name }}">{{ item.desc }}</option> {% endfor %} </select><button type="submit" class="btn btn-success">Go</button>