• xadmin 自定义actions


    1.编写actions

    from xadmin.plugins.actions import BaseActionView
    from django.contrib import messages
    
    class ClaimAction(BaseActionView):
        '''
        批量认领功能
        '''
        # 这里需要填写三个属性
        action_name = "claim"  #: 相当于这个 Action 的唯一标示, 尽量用比较针对性的名字
        description = _(u'收养选中的商品')  #: 描述, 出现在 Action 菜单中, 可以使用 ``%(verbose_name_plural)s`` 代替 Model 的名字.
        icon = 'fa fa-tasks'  # 图标
        model_perm = 'change'  #: 该 Action 所需权限
    
        # 而后实现 do_action 方法
        def do_action(self, queryset):
            # queryset 是包含了已经选择的数据的 queryset
            queryset.update(belonger=self.request.user)
    
            messages.success(self.request, '认领成功')
            # 返回 HttpResponse
            return redirect(self.request.get_full_path())

    2.引用

    from erp.xadminconf.myaction import ClaimAction
    
    class ClaimGoodsAdmin(GoodsInfoModelAdmin):
        # reversion_enable = True
        actions = (ClaimAction,)

    3.xadmin会默认引用父类的actions,如果不需要可以通过修改源码解决

    # 路径 xadminpluginsactions.py
    
    # 大概在236行
        def get_actions(self):
            if self.actions is None:
                return OrderedDict()
    
            actions = [self.get_action(action) for action in self.global_actions]
            
            # for klass in self.admin_view.__class__.mro()[::-1]: # 注释掉这一句
            for klass in (self.admin_view,): # 改成这一句
                class_actions = getattr(klass, 'actions', [])
    
                if not class_actions:
                    continue
                actions.extend(
                    [self.get_action(action) for action in class_actions])
    
            # get_action might have returned None, so filter any of those out.
            actions = filter(None, actions)
            if six.PY3:
                actions = list(actions)
    
            # Convert the actions into a OrderedDict keyed by name.
            actions = OrderedDict([
                (name, (ac, name, desc, icon))
                for ac, name, desc, icon in actions
            ])
    
            return actions
  • 相关阅读:
    微信公众号开发第一版
    关于AJAX
    Node——异步I/O机制
    boostrap框架学习
    less学习笔记
    this指向
    关于js作用域
    mybatis映射mapper文件的#{}和${}的区别和理解
    Eclipse国内镜像源配置
    eclipse优化加速提速,解决eclipse卡、慢的问题
  • 原文地址:https://www.cnblogs.com/wtil/p/12627561.html
Copyright © 2020-2023  润新知