首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectMultipleField上的数据属性的正确格式是什么

SelectMultipleField上的数据属性的正确格式是什么
EN

Stack Overflow用户
提问于 2015-12-22 20:31:03
回答 1查看 297关注 0票数 0

我使用的是文档中建议的自定义SelectMultipleField。

我可以完美地设置选项,但我在设置数据属性的正确格式时遇到了真正的问题。

代码语言:javascript
复制
    class MultiCheckboxField(SelectMultipleField):
        """
        A multiple-select, except displays a list of checkboxes.

        Iterating the field will produce subfields, allowing custom rendering of
        the enclosed checkbox fields.
        """
        widget = widgets.ListWidget(prefix_label=False)
        option_widget = widgets.CheckboxInput()

然后我使用:

代码语言:javascript
复制
        plist = MultiCheckBoxField(coerce=bool, choices=[('1', '1') ... ])

我假设.data应该是一个由True、False、False值组成的列表,再加上coerce=Bool,但我得到了奇怪的结果。

第一个值被读取为所有复选框的值。因此,如果列表中的第一个值为True,则它们都为true;如果第一个值为False,则所有复选框都将取消勾选。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-12-30 07:08:43

如果你看一下wtforms源代码,就会发现这是正在发生的事情。

代码语言:javascript
复制
def process_data(self, value):
    try:
        self.data = list(self.coerce(v) for v in value)
    except (ValueError, TypeError):
        self.data = None

因此,它不会“填充”其他值,它只是强制将已传递到表单中的值数组。

如果您希望以不同的方式处理数据,请重写此方法。

代码语言:javascript
复制
import wtforms

class MultiCheckboxField(wtforms.SelectMultipleField):
    widget = wtforms.widgets.ListWidget(prefix_label=False)
    option_widget = wtforms.widgets.CheckboxInput()

    def process_data(self, value):
        try:
            self.data = []

            for choice_value, choice_label in self.choices:
                if choice_value in value:
                    self.data.append(True)
                else:
                    self.data.append(False)
        except:
            self.data = None

class SomeForm(wtforms.Form):
    multi = MultiCheckboxField('', choices=[('val1', 'label'), ('val2', 'label2')], coerce=bool)

f = SomeForm(data={'multi': ['val2']})

>>> f.multi.data
[False, True]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34415991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档