使表单验证器可跳过的帮助程序
django-validatorchain的Python项目详细描述
动机
在欧洲2014年网站上工作时,我们遇到了这样的情况: 有一个非常昂贵的字段验证器。
遗憾的是,模型/表单字段上的validators-attribute总是作为 一个完整的(意味着该列表中的每个验证器都被执行,不管之前的 一个已经出错了)。所以,我们想有一种方法来标记某些验证器 如果字段被标记为无效,则不执行。
我们仍然希望使用字段验证器api,因为它保留了 不过,一切都很容易证明。
如何使用
from django.db import models from validatorchain import ValidatorChain from .validators import a_cheap_validator from .validators import another_cheap_validator from .validators import an_expensive_validator class SomeModel(models.Model): field = models.CharField( max_length=100, validators=ValidatorChain() .add(a_cheap_validator) .add(an_expensive_validator, skip_on_error=True) .add(another_cheap_validator) )
这样,如果廉价验证器,则不会执行昂贵验证器 已引发异常,同时将执行另一个廉价验证器 再一次。