如何在 Flask-Admin 中为 create/edit 表单字段设置固定值

How to set the fixed value for the create/edit form field in Flask-Admin

我正在使用 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"), ]}

这两种方法都没有解决问题。谁能给我一些建议?

起初,我使用on_model_change来设置roles字段的默认值。

然后,我使用form_argsquery_factory来限制roles字段的选择。

def filter_func():
    return db.session.query(Role).filter_by(name="applicant")

form_args = {
    "roles": {
        "query_factory": filter_func
    }
}