读取 Flask/WTF 中复选框的值属性

Reading the Value Attribute of a Checkbox in Flask/WTF

我有一个表单,其中有一列复选框对应于我的数据库中的列。我将每个复选框(在 javascript 中)的值设置为列的名称,但是当我尝试读取 Flask/Python 中的复选框值时,我只能得到 TrueFalse。如何读取复选框的 value 属性的文本值?

为了使事情复杂化,我将表单生成为 FormFields 的 FieldList,因此我不能简单地对字段名称进行硬编码。 (好吧,我可以,但这会使模式更改变得脆弱。)

我的表单代码是

class ImportFilterSubForm(Form):
    use = BooleanField(
        'Use', 
        render_kw={'class': 'use'}
    )
    sel = SelectField(
        'Maps to:', 
        choices=[], 
        render_kw={'class': 'sel'}, 
        validators=[Optional()]
    )

class ImportFilterForm(FlaskForm):
    rows = FieldList(FormField(ImportFilterSubForm))

我的视图代码(删除了错误处理)是

def prefilter_import():
    db_columns = Contact.__table__.columns.keys()
    filename = request.cookies.get('workfile')
    with open(filename) as fh:
        reader = csv.DictReader(fh)
        file_columns = reader.fieldnames
    
    form = ImportFilterForm()
    for col in db_columns:
        new_row = form.rows.append_entry()
        new_row.use.label = col
        new_row.sel.choices = file_columns
    
    input_file = request.cookies.get('input_file')
    return render_template('filter_import.html', form=form, filename=input_file)

def postfilter_import():
    form = ImportFilterForm()

    db_columns = Contact.__table__.columns.keys()
    filename = request.cookies.get('workfile')
    with open(filename) as fh:
        reader = csv.DictReader(fh)
        file_columns = reader.fieldnames
    
    missing_columns = db_columns
    extra_columns = file_columns
    
    mappings = dict()
    for i, row in enumerate(form.rows):
        if row.use.data:  # Problem arises here
            mappings[row.use.data] = row.sel.data
    
    for key, value in mappings.items():
        missing_columns.remove(key)  # Problem manifests here
        extra_columns.remove(value)

我正在尝试创建一个字典,将复选框的值映射到选择的值,但我只得到复选框的 TrueFalse,即使我'已验证复选框的 value 属性已正确 return 编辑为相应列的名称。

如何获取 Flask/WTForms 到 return value 属性的文本?

经过一番调查,我发现了字段对象的raw_data属性,其中包含HTML控件的value属性值的列表。因此,代码

    mappings = dict()
    for row in form.rows:
        if row.use.data:
            mappings[row.sel.data] = row.use.raw_data[0]
    
    for key, value in mappings.items():
        missing_columns.remove(value)
        extra_columns.remove(key)

做我需要它做的事。