我有多个表单使用我的自定义FloatField(MyFloatField)。在
我创建了一个自定义的FloatField,这样我就可以替换,
,如果用户用,
输入一个float-20,00将变成20.00。在
这是我的自定义浮动字段:
class MyFloatField(FloatField):
def process_formdata(self, valuelist):
if valuelist:
try:
self.data = float(valuelist[0].replace(',', '.'))
except ValueError:
self.data = None
raise ValueError(self.gettext('Kein valider Wert'))
我有一个工作正常的表格。在
^{pr2}$我也有一些其他的形式,我需要同样的行为,但它似乎不起作用。我得到一个DataError
:
DataError: (psycopg2.DataError) FEHLER: ungültige Eingabesyntax für Typ double precision: â12,90â
LINE 1: ...zimmer SET anzahl_zimmer='2', personen='2', preis='12,90' WH...
^
[SQL: 'UPDATE einzelzimmer SET anzahl_zimmer=%(anzahl_zimmer)s, personen=%(personen)s, preis=%(preis)s WHERE einzelzimmer.id = %(einzelzimmer_id)s'] [parameters: {'einzelzimmer_id': 50, 'anzahl_zimmer': u'2', 'personen': u'2', 'preis': u'12,90'}]
{1>因为float不是用cd1}代替的。在
以下是我的其他表格:
class EditZimmerForm_Einzel(Form):
preis = MyFloatField('Preis pro Person', validators=[DataRequired(message="Geben Sie an wie teuer eine Nacht pro Person ist")])
class EditZimmerForm_Doppel(Form):
preis_doppelz = MyFloatField('Preis pro Person', validators=[DataRequired(message="Geben Sie an wie teuer eine Nacht pro Person ist")])
class EditZimmerForm_Mehrbett(Form):
preis_mehrbettz = MyFloatField('Preis pro Person', validators=[DataRequired(message="Geben Sie an wie teuer eine Nacht pro Person ist")])
class EditZimmerForm_Wohnung(Form):
preis_wohnungz = MyFloatField('Preis pro Person', validators=[DataRequired(message="Geben Sie an wie teuer eine Nacht pro Person ist")])
编辑
这些形式之间的唯一区别是,第一种形式没有价值。用户输入一个值。在
不起作用的表单用于编辑。这意味着已经有了一个值。在
类MyFloatField仍然是FloatField。包含逗号的字符串不是有效的浮点,因此会导致错误。在
我建议您使用普通的
StringField
,并使用自定义验证器来确保输入满足您的要求。类似于forms.py
中的内容:相关问题 更多 >
编程相关推荐