Skip to main content
 首页 » 编程设计

python之在 For 循环中格式化 Django ValidationError

2024年12月31日34jpfss

我编写了一系列 RegexValidator 定义,我在 Django 模型输入上调用这些定义。这是一个例子:

def fein_validator(value): 
    err = None 
    for validator in FEIN_VALIDATOR: 
        try: 
            validator(value) 
            return value 
        except ValidationError as exc: 
            err = exc 
    raise err 

下面是此方法的引用 FEIN_VALIDATOR。请注意,在这个例子中只有一个项目,我有其他验证器有多个项目(因此 for 循环):

FEIN_VALIDATOR = [ 
    RegexValidator(r'^\d{2}-\d{7}$') 
    ] 

该方法运行良好,并在应该的时候抛出错误。但是,它抛出的错误是 Enter a valid value. 并且我想自定义返回值以使其更具体。

我试过 this 的版本和 this .但是这些都是假设只有一个pass。我正在尝试使用 for 循环 运行一系列验证器。

问题 1:我正在使用的方法构造是否适用于此 - 或者每个验证是否应该有一个单独的方法? [由此我可以添加自定义消息。]

问题 2:如果这样做有效,我该如何将引发的错误消息更改为自定义消息?

请您参考如下方法:

编辑 1:添加评论

是的,你的方法很完美。

编辑 2:添加了自定义错误消息模型链接

custom error messages with Model Form

  def fein_validator(value): 
        err = None 
        for validator in FEIN_VALIDATOR: 
            try: 
                validator(value) 
                return value 
            except ValidationError: 
                raise ValidationError({'field_name': ["error message",]})