2015-01-20 6 views
5

मैं फॉर्म इनपुट को प्रदर्शित और मान्य करने के लिए WTForms का उपयोग कर रहा हूं। मैं एक धन राशि इनपुट के लिए DecimalField का उपयोग करता हूं, जो एक दशमलव विभाजक के रूप में डॉट के साथ मान डालने पर ठीक काम करता है। चूंकि इस वेबसाइट का उपयोग महाद्वीपीय यूरोप में किया जाएगा, हालांकि, भी एक अल्पविरामक को दशमलव विभाजक के रूप में अनुमति देना चाहता है। इसका मतलब है कि "2.5" और "2,5" के परिणामस्वरूप "साढ़े साढ़े" का अर्थ होना चाहिए।WTForms के साथ दशमलव विभाजक के रूप में डॉट और कॉमा दोनों को कैसे स्वीकार करें?

जब मैं अल्पविराम के साथ एक मान इनपुट करता हूं, तो मुझे 'Not a valid decimal value' कहने में त्रुटि मिलती है। मैं डॉट्स और कॉमा दोनों को डब्ल्यूटीएफ के साथ दशमलव विभाजक के रूप में कैसे स्वीकार कर सकता हूं?


मुझे पता है कि मैं लोकेल-आधारित संख्या स्वरूपण का उपयोग करने के लिए बेबेल का उपयोग कर सकता हूं, लेकिन मुझे यह नहीं चाहिए। मैं विशेष रूप से विभाजक मूल्यों के रूप में एक बिंदु और अल्पविराम दोनों को स्वीकार करना चाहता हूं।

उत्तर

6

आप DecimalField उपवर्ग कर सकते हैं और समय के साथ के लिए अल्पविराम की जगह से पहले डेटा संसाधित किया जाता है:

class FlexibleDecimalField(fields.DecimalField): 

    def process_formdata(self, valuelist): 
     if valuelist: 
      valuelist[0] = valuelist[0].replace(",", ".") 
     return super(FlexibleDecimalField, self).process_formdata(valuelist) 
संबंधित मुद्दे

 संबंधित मुद्दे