Stark组件-批量操作实现

1.stark.py

class StarkAdmin(object):    
    def multi_delete(self,request):
        print('all delete')
        pk_list=request.POST.getlist('pk')
        self.model_class.objects.filter(pk__in=pk_list).delete()
        # return HttpResponse('删除成功')
    multi_delete.text='批量删除'

    def multi_init(self,request):
        print('all init')
    multi_init.text='批量初始化'

    # action_list=[multi_delete,multi_init]
    action_list=[]


    def get_action_list(self):
        val=[]
        val.extend(self.action_list)
        return val

    def get_action_dict(self):
        val={}
        for item in self.action_list:
            val[item.__name__]=item
        return val

     def list(self, request):

        if request.method=='POST':
            # print(request.POST)
            action_name=request.POST.get('action')
            # pk_list=request.POST.getlist('pk')
            action_dict=self.get_action_dict()
            if action_name not in action_dict:
                return HttpResponse('非法请求')
            response=getattr(self,action_name)(request)
            if response:
                return response

       #action
        action_list=[{'name':func.__name__,'text':func.text}  for func in self.get_action_list()]
#list.html
  {% if action_list %}
                <div class="form-group">
                    <select class="form-control" name="action">
                        <option>请选择功能</option>
                        {% for item in action_list %}
                            <option value="{{ item.name }}">{{ item.text }}</option>
                        {% endfor %}
                    </select>
                    <input type="submit" value="执行" class="btn btn-primary">
                </div>
            {% endif %}

自定义方法

#app/stark.py
class ArticleStarkAdmin(StarkAdmin):
   
    def xxx(self,request):
        pass
    xxx.text = 'fuck u'

    action_list = [StarkAdmin.multi_delete,xxx]

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值