如何解决根据用户类型将字段设置为只读,使用 form_widget_args、Flask、SQLAlchemy
我定义了两种不同角色的用户。在我的模型示例中,我希望字段 A 对于用户类型 'staff' 是只读的,但对于用户类型 'boss' 是可编辑的。目前我只能为所有用户设置只读字段。如何处理这种多用户类型的情况?
class Example(Base_Model)
__tablename__ = 'example'
A = Column(Text(),nullable=False)
class View(Base_View)
"form_widget_args": {
"A": {"readonly": True}
}
admin.add_view(View(Example,db.session))
## to check if the user is staff
# login.current_user.has_auth('staff')
解决方法
使用 Flask Admin 已经有一段时间了,但这会起作用吗?
if "staff" in current_user.roles:
"form_widget_args": {"A": {"readonly": True}
else:
"form_widget_args": {"A": {"readonly": False}
,
覆盖方法edit_form
(docs),实例化默认编辑表单,测试用户是谁,然后根据需要修改表单。
例如:
class ExampleView(AdminView):
def edit_form(obj=None):
form = super(ExampleView,self).edit_form(obj=obj)
if current_user.has_auth('staff'):
# untested
form.A.render_kw['readonly'] = True
return form
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。