Flask中BooleanField只接受’false’或者None为False,其他值都接收为True,0、false、'0’也为True
如果想更改BooleanField接收None为None的话,就需要重新定义BooleanField。
class MyBooleanField(wtf.BooleanField):
def __init__(self, label=None, validators=None, false_values=None, **kwargs):
# don't accept blank as False, so that default will trigger
super(MyBooleanField, self).__init__(label, validators, (False, 'false', 0, '0'), **kwargs)
def process_formdata(self, valuelist):
if not valuelist or valuelist[0] == '' or valuelist[0] is None:
self.data = self.default
elif valuelist[0] in self.false_values:
self.data = False
else:
self.data = True