WTForms 美元值自定义字段

标签 wtforms flask-wtforms

我是 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/

相关文章:

python - 使用 Babel 进行 Flask WTF 本地化

python - 不想验证 wtforms 中的 DateField 但想保留日期格式

twitter-bootstrap - 使用 Bootstrap 选择的 Flask WTForm 渲染

Flask-WTForms FileField 未验证

python - 如何增加 flask 形式的 bool 字段的大小?

flask - 将 Bootstrap 模式按钮映射到 Flask WTF 提交

python - WTForms:我似乎无法动态地为 QuerySelectField 提供默认值

javascript - AJAX 不发布多字段表单

python-2.7 - Flask WTForms 表单无法验证

python - WTForms 在发布后设置输入字段