我是 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 = []
最佳答案
您的问题是,因为您覆盖了 process_formdata
,所以您正在用您自己的代码替换默认处理代码(它尝试将字符串转换为十进制,如果不能,则会引发错误) 。您需要确保您的 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)
关于WTForms 美元值自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20876217/