flask的WTForms字段IntegerField怎么初始化为空值 ?

[图片] [图片] IntegerField的值怎样赋值后刷新后会为空的? 现在上面表单格式为StringField,下面的表单为IntegerFie…
关注者
4
被浏览
1,756

2 个回答

form.version.raw_data=[""]

从源码中

def _value(self):
        if self.raw_data:
            return self.raw_data[0]
        elif self.data is not None:
            return text_type(self.data)
        else:
            return ''

可以看到最先调用的是 raw_data ,而在表单请求返回以后, IntegerField FloatField 都会给 raw_data data 赋值。其中 raw_data 类型为 list(str) ,而 data float 或者 int 。所以考虑到最开始先调用 raw_data ,你应该赋值为上面的写法。

今天在学的时候也遇到这个问题,翻了翻,发现再加一句form.version.raw_data=None就可以。

因为StringField的_value()是这样的

def _value(self):
        return text_type(self.data) if self.data is not None else ''

而IntegerField的_value()是这样的

def _value(self):
        if self.raw_data: