【问题标题】:Flask FloatField throws error when trying to save dataFlask FloatField 在尝试保存数据时抛出错误
【发布时间】:2019-02-19 04:21:03
【问题描述】:

我创建了一个模型和表单,并在其中定义了一些浮点数据:

    class Paciente(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        nombres = db.Column(db.String(40),unique=True, nullable=False)
        apellidos = db.Column(db.String(40),unique=True, nullable=False)
        fecha_nacimiento = db.Column(db.DateTime,nullable=False)
        semanas_gestacion = db.Column(db.Integer,nullable=False)
        soplo_cardiaco = db.Column(db.Integer, nullable=False)
        peso = db.Column(db.Float, nullable=False)
        satO2_miembroSup = db.Column(db.Float, nullable=False)
        satO2_miembroSup24 = db.Column(db.Float, nullable=False)


class PacienteForm(FlaskForm):
    nombres = StringField('Nombres',validators=[DataRequired(), Length(min=2, max=20)])
    apellidos = StringField('Apellidos',validators=[DataRequired(), Length(min=2, max=30)])
    fecha_nacimiento = DateField('Fecha de nacimiento', format='%Y-%m-%d')
    semanas_gestacion = IntegerField('Semanas de gestacion',widget=NumberInput(),validators=[InputRequired(), NumberRange(min=0, max=50, message="Valores de 0 a 50")])
    soplo_cardiaco = SelectField('Soplo cardíaco',
                       choices=[
                           (1, 'Si'),
                           (0, 'No')])
    peso = FloatField('peso',widget=NumberInput(),default=1.0,
        validators=[NumberRange(0, 1E+20)])
    satO2_miembroSup = FloatField('Saturacion de O2 -  miembro superior al nacimiento',widget=NumberInput(),default=1.0,
        validators=[NumberRange(0, 1E+20)])
    satO2_miembroSup24 = FloatField('Saturacion de O2 - miembro superior al nacimiento 24 horas',widget=NumberInput(),default=1.0,
        validators=[NumberRange(0, 1E+20)])
    satO2_miembroSup72 = FloatField('Saturacion de O2 - miembro superior al nacimiento 72 horas',widget=NumberInput(),default=1.0,
        validators=[NumberRange(0, 1E+20)])
    satO2_miembroInf = FloatField('Saturacion de O2 - miembro inferior al nacimiento',widget=NumberInput(),default=1.0,
        validators=[NumberRange(0, 1E+20)])
    satO2_miembroInf24 = FloatField('Saturacion de O2 - miembro inferior al nacimiento  24 horas',widget=NumberInput(),default=1.0,
        validators=[NumberRange(0, 1E+20)])

但是,当我尝试从表单中保存数据时出现错误,它说我应该引入一个有效值:

我已经添加了方法:

class CommaFloatField(FloatField):
    """
    Subclass that handles floats of this format 1.2 or 1,2.
    """

    def process_formdata(self, valuelist):
        if valuelist:
            try:
                self.data = float(valuelist[0].replace(",", "."))
            except ValueError:
                self.data = None
                raise ValueError(self.gettext('Not a valid float value'))

但我无法保存任何浮点值 我真的很感激一些帮助! 提前谢谢你们!

【问题讨论】:

    标签: python-3.x flask flask-wtforms wtforms


    【解决方案1】:

    您看到的是浏览器错误。如果您使用的是 Chrome,您应该知道句点 '.'用作小数点,而不是逗号。

    您可以在表单中设置novalidate attr 以避免浏览器验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多