1

WTForms は初めてです。「$」とカンマを使用できる DollarField という新しいタイプのフィールドを作成したいと考えていました。次に、これらを取り除き、値を保存します。

「$」を取り除き、コンマを削除しましたが、DecimalField で機能するすべての通常の検証 (たとえば、ユーザーが「asda」を入力した場合のケースのキャッチ) が機能しなくなりました。

class DollarField(DecimalField):
    def process_formdata(self, valuelist):
        if len(valuelist) == 1:
            self.data = [valuelist[0].strip('$').replace(',', '')]
        else:
            self.data = []
4

1 に答える 1

1

あなたの問題は、 をオーバーライドするためprocess_formdata、デフォルトの処理コード (文字列を 10 進数に変換しようとするため、変換できない場合はエラーが発生する) を独自のコードに置き換えていることです。の実装がprocess_formdata親のprocess_formdataメソッドを手動で呼び出して、そのロジックも実行されるようにする必要があります...

class DollarField(DecimalField):
    def process_formdata(self, valuelist):
        if len(valuelist) == 1:
            self.data = [valuelist[0].strip('$').replace(',', '')]
        else:
            self.data = []

        # Calls "process_formdata" on the parent types of "DollarField",
        # which includes "DecimalField"
        super(DollarField).process_formdata(self.data)
于 2014-01-02T12:10:10.300 に答える