请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于Admin的query

def admin_auth(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        admin = Admin.query.join(
            Role
        ).filter(
            Role.id == Admin.role_id,
            Admin.id == session["admin_id"]
        ).first()
        auths = admin.role.auths
        auths = list(map(lambda v: int(v), auths.split(",")))
        auth_list = Auth.query.all()
        urls = [v.url for v in auth_list for val in auths if val == v.id]
        rule = request.url_rule
        if rule not in urls:
            abort(404)
        return f(*args, **kwargs)
    return decorated_function
    
 老师, 这个Admin.query.join(Role)就是把所有的role type全部取出来么?
 后面这个filter(Role.id == Admin.role_id,Admin.id == session["admin_id"]
).first()有点乱,不是很懂这个逻辑,能解释下么,谢谢老师

正在回答

1回答

同学,你好,相当于关联查询,关联查询的具体语句如下:

select * from admin left join role on role.id = admin.role_id where admin.id = 会话的session["admin_id"]

0 回复 有任何疑惑可以回复我~
  • 提问者 Grant_Lian #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-09-14 21:31:26
  • 提问者 Grant_Lian #2
    老师你怎么看出来是left join呢,我查了文档这个join就是普通join啊
    回复 有任何疑惑可以回复我~ 2017-09-14 21:47:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信