动态字段取决于WTForms的先前字段

Shan-x

我正在使用WTForms制作表单。目前,我有这个:

class UploadForm(flask_wtf.Form):
    fichier = wtforms.fields.FileField(u'Fichier')
    description = wtforms.fields.TextAreaField(u'Description')
    year = wtforms.fields.SelectField(u'Année', choices=[('1A','1A'),('2A','2A')])
    subject = wtforms.fields.SelectField(u'Matière', choices=app.config['SUBJECTS'])
    submit = wtforms.fields.SubmitField(u'Envoyer')

使用SUBJECTS = [('Sub1','Sub1'), ('Sub2','Sub2')]和此模板:

{% block content %}
  <h2>Form</h2>
  <form action="{{ url_for('get') }}" method="post"
          enctype="multipart/form-data">
    {{ form.hidden_tag() }}

    {{ form.fichier.label }}
    {{ form.fichier }}

    {{ form.description.label }}
    {{ form.description }}

    {{ form.year.label }}
    {{ form.year }}

    {{ form.subject.label }}
    {{ form.subject }}

    {{ form.submit }}
  </form>
{% endblock %} 

但是所有年份的主题都不尽相同,因此我想使主题字段的列表动态化,以便仅提出与所选年份相对应的主题。知道我该怎么做吗?

疯狂

您可以通过在视图中分配构造后来自定义选项值:

def view():
    form = UploadForm(request.form, ...)
    if form.year.data == '1A':
        form.subject.choices = SUBJECTS_1A
    else:
        form.subject.choices = SUBJECTS_2A

    if request.form and form.validate():
       [...]

当然,将dicts用作查找映射甚至更pythonic。

SUBJECTS_BY_YEAR = {
    '1A': [('a', 'a'), ('b', 'b')],
    '2A': [...],
}

def view():
    form = UploadForm(request.form)
    form.subject.choices = SUBJECTS_BY_YEAR.get(form.year.data) or []

只要validate()调用之前已设置的选项,就可以进行。

作为参考,请参阅WTForms文档中“动态选择”中的SelectField。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

取决于字段的属性

来自分类Dev

Odoo 9 - 动态选择字段取决于上下文

来自分类Dev

动态字段数取决于另一个字段的值

来自分类Dev

Oracle中的约束取决于字段的值

来自分类Dev

asyncValidator取决于其他字段的值

来自分类Dev

汇总值取决于其他字段

来自分类Dev

自动填充字段,取决于选择的选项

来自分类Dev

WHERE IF(字段取决于参数)SQL

来自分类Dev

Laravel 验证取决于字段的值

来自分类Dev

Bot框架-动态FormFlow取决于先前的答案

来自分类Dev

Django模型选择字段-取决于其他字段的选择

来自分类Dev

向WTForms动态添加字段并返回UnboundField

来自分类Dev

使用wtforms动态添加输入字段

来自分类Dev

Flask + WTForms,动态生成的字段列表

来自分类Dev

使用WTForms的动态选择字段未更新

来自分类Dev

向WTForms动态添加字段并返回UnboundField

来自分类Dev

返回类型取决于静态参数包字段

来自分类Dev

oracle查询-其他where条件取决于字段

来自分类Dev

yii2:取决于操作的条件显示/显示字段

来自分类Dev

Gson序列化取决于字段值

来自分类Dev

如何编写内容取决于某个扩展字段的代码段?

来自分类Dev

顺序取决于varchar字段中的json数据

来自分类Dev

Rivets.js属性取决于几个字段

来自分类Dev

有条件的更新,取决于匹配的字段

来自分类Dev

反序列化取决于字段值

来自分类Dev

输入状态字段取决于下拉选择

来自分类Dev

必填字段的前端验证,取决于单选按钮的值

来自分类Dev

Tableau中的计算字段取决于列中的值

来自分类Dev

顺序取决于varchar字段中的json数据