2015-01-20 22 views
5

Sto usando WTForms per visualizzare e convalidare l'input del modulo. Io uso un DecimalField per un importo in denaro, che funziona bene quando si inserisce un valore con un punto come separatore decimale. Poiché questo sito Web verrà utilizzato nell'Europa continentale, tuttavia, I anche desidera consentire una virgola come separatore decimale. Ciò significa che lo sia "2.5" e "2,5" dovrebbe risultare in un valore che significa "due anni e mezzo".Come accettare sia punto sia virgola come separatore decimale con WTForms?

Quando immetto un valore con una virgola, viene visualizzato un messaggio di errore 'Not a valid decimal value'. Come posso accettare sia punti che virgole come separatori decimali con WTForms?


So che posso usare Babel per utilizzare la formattazione numerica basata sulla locale, ma non voglio quello. Voglio specificamente accettare sia un punto che una virgola come valori separatori.

risposta

6

È possibile sottoclasse DecimalField e sostituire le virgole con periodi prima che i dati vengono elaborati:

class FlexibleDecimalField(fields.DecimalField): 

    def process_formdata(self, valuelist): 
     if valuelist: 
      valuelist[0] = valuelist[0].replace(",", ".") 
     return super(FlexibleDecimalField, self).process_formdata(valuelist) 
Problemi correlati