2015-01-20 13 views
5

Używam WTForms do wyświetlania i sprawdzania danych wejściowych formularza. Używam DecimalField do wprowadzania kwoty pieniężnej, która działa poprawnie podczas wstawiania wartości z kropką jako separatorem dziesiętnym. Ponieważ ta strona internetowa będzie używana w Europie kontynentalnej, I również chce zezwolić na przecinek jako separator dziesiętny. Oznacza to, że zarówno "2,5" i "2,5" powinny dać wartość oznaczającą "dwa i pół".Jak akceptować kropkę i przecinek jako separator dziesiętny z WTForms?

Po wprowadzeniu wartości z przecinkiem pojawia się komunikat o błędzie: 'Not a valid decimal value'. Jak mogę akceptować kropki i przecinki jako separatory dziesiętne z WTForms?


Wiem, że mogę używać Babel do formatowania liczb w oparciu o ustawienia regionalne, ale nie chcę tego. W szczególności chcę zaakceptować kropkę i przecinek jako wartości separatora.

Odpowiedz

6

Można podklasy DecimalField i zastąpić przecinki z okresami zanim dane są przetwarzane:

class FlexibleDecimalField(fields.DecimalField): 

    def process_formdata(self, valuelist): 
     if valuelist: 
      valuelist[0] = valuelist[0].replace(",", ".") 
     return super(FlexibleDecimalField, self).process_formdata(valuelist) 
Powiązane problemy