2015-01-20 12 views
5

Tôi đang sử dụng WTForms để hiển thị và xác thực thông tin nhập biểu mẫu. Tôi sử dụng một DecimalField cho một số tiền đầu vào số tiền, mà hoạt động tốt khi chèn một giá trị với một dấu chấm như một dấu phân cách thập phân. Vì trang web này sẽ được sử dụng ở lục địa châu Âu, tuy nhiên, tôi cũng muốn cho phép dấu phẩy làm dấu phân cách thập phân. Điều này có nghĩa là cả hai "2,5" và "2,5" sẽ dẫn đến giá trị có nghĩa là "hai và một nửa".Làm cách nào để chấp nhận cả dấu chấm và dấu phẩy dưới dạng dấu phân cách thập phân với WTForms?

Khi tôi nhập giá trị bằng dấu phẩy, tôi gặp lỗi khi nói 'Not a valid decimal value'. Làm thế nào tôi có thể chấp nhận cả dấu chấm và dấu phẩy dưới dạng dấu phân tách thập phân với WTForms?


Tôi biết tôi có thể sử dụng Babel để sử dụng định dạng số cục bộ, nhưng tôi không muốn điều đó. Tôi đặc biệt muốn chấp nhận cả dấu chấm và dấu phẩy làm giá trị phân cách.

Trả lời

6

Bạn có thể phân lớp DecimalField và thay thế dấu phẩy với thời gian trước khi dữ liệu được xử lý:

class FlexibleDecimalField(fields.DecimalField): 

    def process_formdata(self, valuelist): 
     if valuelist: 
      valuelist[0] = valuelist[0].replace(",", ".") 
     return super(FlexibleDecimalField, self).process_formdata(valuelist) 
Các vấn đề liên quan