我使用Flask-Admin和Flask-Security编写网站。我想实现一个功能:只有admin角色的用户才能创建foo角色的用户。只有foo角色的用户可以创建bar角色的用户。
我试过了QueryAjaxModelLoader
:
form_ajax_refs = {
roles: QueryAjaxModelLoader("role", db.session, Role, fileds=["name"])
和form_choices
:
form_choices = {"roles": [(3, "foo"), ]}
这两种方法无法解决问题。谁能给我一些建议?
答案 0 :(得分:1)
首先,我使用on_model_change
设置roles
字段的默认值。
然后,我使用form_args
和query_factory
来限制roles
字段的选择。
def filter_func():
return db.session.query(Role).filter_by(name="applicant")
form_args = {
"roles": {
"query_factory": filter_func
}
}