首页 > 解决方案 > WTForms ListField of FieldForm 包含 RadioField - 表单没有属性“副本”

问题描述

我正在尝试使用烧瓶和 wtforms 动态添加无线电场

#FORMS

from flask_wtf import FlaskForm
from wtforms import FieldList, FormField, RadioField, SubmitField

class DomainForm(FlaskForm):
    domain = RadioField('placeholder', choices=[])

class FormScore(FlaskForm):
    domains = FieldList(FormField(DomainForm))
    submit = SubmitField('Save')
###########################


DATA = [
        ("Lateral border", ('0', '0.5', '1')),
        ("Medial crease", ('0', '0.5', '1')),
        ("Talar head",  ('0', '0.5', '1')),
        ("Posterior crease",  ('0', '0.5', '1')),
        ("Equinus rigidity",  ('0', '0.5', '1')),
        ("Empty heel", ('0', '0.5', '1'))
        ]
    


@app.route('/score', methods=['GET', 'POST'])
def score():
    formlist = []
    for i in range(len(DATA)):
        domainForm = forms.DomainForm()
        domainForm.domain.label = DATA[i][0]
        domainForm.domain.choices = DATA[i][1]
        domainForm.domain.name = DATA[i][0]
        formlist.append(domainForm)

    form = forms.FormScore()
    form.domains= formlist

    if form.validate_on_submit():
        results=[]
        for domainForm in form.domains:
            results.append(domainForm.domain.data) ##data is always null

    
    return render_template("score.html", form=form)

此代码在 html 中正确呈现,但在提交表单时,如您所料,尝试获取所选选项将始终返回 null

我也尝试了以下方法: form.domains.entries = formlist

它也在 html 中成功呈现,但是当它到达该validate_on_submit行时,我收到此错误 'FormScore' object has no attribute 'copy'

谢谢你的帮助

标签: flaskflask-wtformslistfield

解决方案


推荐阅读