我编写了一系列 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",]})
