我想在wtform中创建一个floatfield来编辑数据库中的值,如果我们不想改变该属性的值,可以将其保留为空。但是当我保持字段为空并提交表单时,它会给出验证错误消息,"Not a valid float value.">
这是我使用的代码
def Inrange(form, field):
if form.movie_rating.data:
if 0 > int(form.movie_rating.data) < 10:
raise ValidationError('Rating should be from 0 to 10')
class EditForm(FlaskForm):
movie_rating = FloatField('Your Rating out of 10', validators=[Inrange])
review = StringField('Review')
# movie_id = HiddenField('id')
submit = SubmitField('Done')
我可以让Stringfield空没有任何问题,但不是Floatfield。
是否有任何方法来解决这个问题,而仍然使用Floatfield?如果没有,还有其他选择吗?
您可以使用wtforms提供的验证器来验证输入。
-
Optional
允许空字段并在这种情况下停止验证。
字段返回值为None
。 -
NumberRange
保证输入在规定范围内。
from wtforms.validators import (
NumberRange,
Optional
)
class EditForm(FlaskForm):
movie_rating = FloatField(
'Your rating out of 10',
validators=[
Optional(),
NumberRange(0, 10, 'Rating should be from 0 to 10')
]
)