#这个出错多出现在SelectField这样的字段中,要么是在模板渲染的时候对这个字段进行了for 循环,要么就是出现了我的这种情况
<label for="for_menu_id">{{ form.menu_id.label }}</label>
{{ form.menu_id }}
习惯给label 加上一个for_字段 结果到select 这里这样写是会报错的
所以去掉就好了,或者这样写
{{ form.menu_id.label }}
{{ form.menu_id }}
#上面的方法还是不行的话,你需要这么写
class hobbyForm(FlaskForm):
hobbies = SelectField(coerce = int)#针对数字类型
hobbies = SelectField(coerce = str)#针对字符串
如果你确定上面的那些你都做了之后,还是会报错的话,那么找到源码(注意一般只有SelectField这里会报这个错误)
class SelectField(SelectFieldBase):
widget = widgets.Select()
def __init__(self, label=None, validators=None, coerce=text_type, choices=None, **kwargs):
super(SelectField, self).__init__(label, validators, **kwargs)
self.coerce = coerce
self.choices = choices
def pre_validate(self, form):
for v, _ in self.choices:
if self.data == v:
break
else:
raise ValueError(self.gettext('Not a valid choice'))
class xxx(SelectField):
def pre_validate (self,form):
pass
class yyyForm(FlaskForm):
yyy = xxx(label = 'ddd',........)