gpt4 book ai didi

python - flask 管理员 : How to make a query according to the current user's id and role?

转载 作者:行者123 更新时间:2023-11-30 22:37:35 24 4
gpt4 key购买 nike

我使用了下面的类,允许用户在注册后编辑自己的个人资料,效果很好。我使用 get_queryget_count_query 来实现这一点。

但是,如果当前用户是管理员,我如何自定义它,让他/她查看所有用户的个人资料,而不仅仅是他/她自己的个人资料?提前致谢。

 from flask_admin.contrib.sqla.view import ModelView, func

class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
last_name = db.Column(db.String(255))
email = db.Column(db.String(255), unique=True)
password = db.Column(db.String(255))

def __str__(self):
return self.email

class UserView(ModelView):
"""
Restrict only the current user can see his/her own profile
"""
def get_query(self):
return self.session.query(self.model).filter(self.model.id==current_user.id)
def get_count_query(self):
return self.session.query(func.count('*')).filter(self.model.id==current_user.id)

最佳答案

您可以为管理员定义另一个自定义ModelView。例如:

class UserViewForAdmin(ModelView):

def is_accessible(self):
return current_user.has_role("admin")
def inaccessible_callback(self, name, **kwargs):
return redirect(url_for("security.login", next=request.url))

pass

admin = Admin(name="Flask-Admin Example")

admin.add_view(UserView(User, db.session, name="Profile")
admin.add_view(UserViewForAdmin(User, db.session, name="UserList", endpoint="users")

该示例假设您使用 Flask-Security 进行用户管理。

关于python - flask 管理员 : How to make a query according to the current user's id and role?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com