从SQLAlchemy对象更新自定义WTForm widged

时间:2014-12-19 08:45:43

标签: python forms sqlalchemy wtforms

Boolean小部件是WTForms中的一个复选框,而我希望有一个是/否下拉菜单而不是" true / false"生成形式的选择。

这个自定义小部件几乎可以工作:

class SelectYesNo(SelectField):

    def __init__(self, *args, **kwargs):
        kwargs['choices'] = [('Yes', 'Yes'), ('No', 'No')]
        super(SelectYesNo, self).__init__(*args, **kwargs)        

    def process_formdata(self, valuelist):
        if valuelist:
            try:
                self.data = False
                if valuelist[0] == 'Yes':
                    self.data = True
            except ValueError:
                raise ValueError(u'Invalid Choice: could not coerce (valuelist: {0})'.format(valuelist))

    def pre_validate(self, form):
        pass

现在,当我在表单上使用.populate_obj方法时,工作,也就是说,它正确地将bool存储在SQLAlchemy对象中,如{{1 (我可以在DB中看到正确的值已存储在表中)。

工作的地方是将SQA对象值读入表单中的此窗口小部件,如form.populate_obj(SQAItem()),其中form = form_class(request.POST, sqa_item_instance)已从SQLAlchemy读取并具有bool字段

我怎样才能做到这一点,即"填充"从SQA项目中正确填写sqa_item_instance字段?

0 个答案:

没有答案