如何使用WTForms的SelectMultipleField并配置size属性
修改步骤
1. 调整form.py中的字段定义
把原来的SelectField替换为SelectMultipleField即可,原有参数基本可以直接复用:
# 替换前 # domains = SelectField(label='Domain', choices=DOMAINS, validate_choice=True, validators=[InputRequired()]) # 替换后 domains = SelectMultipleField(label='Domain', choices=DOMAINS, validate_choice=True, validators=[InputRequired()])
如果需要限制最少选择的选项数量,可以把InputRequired替换为Length(min=N),N为你要求的最少选择数
2. 调整HTML模板,添加size属性
文档提到的size属性直接在调用字段渲染的位置传入即可,属性值为你想要下拉框默认展示的选项行数:
<div class="form-group"> {{ form.domains.label(class="form-control-label") }} {% if form.domains.errors %} {{ form.domains(class="form-control form-control-lg is-invalid", size=5) }} <div class="invalid-feedback"> {% for error in form.domains.errors %} <span>{{ error }}</span> {% endfor %} </div> {% else %} {{ form.domains(class="form-control form-control-lg", size=5) }} {% endif %} </div>
如果希望默认展示所有可选项,可以把size的值设置为
DOMAINS列表的总长度
多选字段提交后返回的取值是所选选项的列表,和原SelectField返回单个值的逻辑不同,后端处理提交数据时需要注意适配。
内容的提问来源于stack exchange,提问作者Shira
相关产品推荐
相关产品推荐

