77.(后端)角色权限的排序显示——sorted函数自定义排序

1.概述

角色用户的权限是有一定的顺序的,但是,我们刚刚的显示并无顺序,顺序就按照我们数据库所加载的,这样显示很不友好

2.处理思路

首先,我们的问题就出在获取数据时,所以应该定位到创建模型时的get_menu_dict()函数中。此时,我们应该对使用sorted给对象(角色)排序,可是对象是不可以进行排序的。此时,我们就应该使用自定义关键词给对象进行排序即可。

3.主要代码

<!-- components/power/Role.vue -->
# 角色管理
class Role(db.Model):
    __tablename__ = 't_role'
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(32), unique=True, nullable = True)
    desc = db.Column(db.String(32))
    # backref反向关联,方便子表查询主表数据
    users = db.relationship('User', backref='role')
    menus = db.relationship('Menu', secondary = trm)

    def to_dict(self):
        return {
            'id':self.id,
            'name': self.name,
            'desc':self.desc,
            'menu': self.get_menu_dict()
        }
    
    def get_menu_dict(self):
        menu_list = []
        # 自定义排序
        menus = sorted(self.menus, key= lambda temp:temp.id)
        for m in menus:
            # 一共就两级,二级的应该放在一级的当作children输出
            if m.level == 1:
                first_dict = m.to_dict()
                first_dict['children'] = []
                for s in menus:
                    # 只有二级才需要加入到children,并判断是否为关联关系
                    if s.level == 2 and s.pid == m.id:
                        first_dict['children'].append(s.to_dict())
                menu_list.append(first_dict)
        return menu_list

4.效果展示

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值