osj*_*ick 12 python flask flask-sqlalchemy flask-admin
我尝试将表单字段设置readonly为Flask-Admin应用程序中的编辑视图.根据这个问题的答案,我知道如果我有这个
class MyView(ModelView):
form_widget_args = {
'title': {
'readonly': True
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将表单字段设置为readonly,但这适用于创建和编辑视图.如何仅将参数应用于编辑视图?
一个纯python解决方案可以使用on_form_prefilladmin提供的回调函数,并且只能在edit视图中运行。form_widget_args在这种情况下,您将不需要。
您可能会有类似这样的内容来动态编辑表单,从而使该字段为只读:
class MyView(ModelView):
def on_form_prefill(self, form, id):
form.title.render_kw = {'readonly': True}
Run Code Online (Sandbox Code Playgroud)
我会为此做一些解决方法。创建自定义编辑模板并将其添加到您的课程中。您在 github 上的 Flask 存储库中找到的标准编辑模板(标准编辑模板)
class MyView(ModelView):
edit_template = 'my_custom_edit_template.html'
Run Code Online (Sandbox Code Playgroud)
并在您的自定义编辑模板中创建一个 javascript 函数来禁用您的元素。因此,它仅在编辑视图中禁用,而在创建视图中禁用。
{% block tail %}
{{ super() }}
{{ lib.form_js() }}
<script>
window.onload = function () {
document.getElementById("myfield_id").disabled = true;
}
</script>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这可能不是最好的解决方案,但它对我有用。我认为也应该可以更改 jinja2 模板以直接禁用该字段。我尝试过: {{ form.myfield_id(disabled=True) }} 但它会渲染我的字段两次......但我的第一种方法有效。
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |