如果你能很容易地通过一个比100个整数更高的校验。到目前为止,我得到的是:
class ValidateAnyOf(object):
def __init__(self, *validators):
self.validators = validators
def __call__(self, value):
errors = []
for validator in self.validators:
try:
validator(value)
return
except ValidationError as e:
errors.append(e.message)
raise ValidationError('Combined validation failed:' + ','.join(errors))
class TestModel(models.Model):
score = models.IntegerField(validators=[ValidateAnyOf(validators.MaxValueValidator(10),
validators.MinValueValidator(100))])
逻辑是可以的。当没有一个验证器通过时,问题就出现了。我想显示一个错误列表,所以我将异常的消息存储在一个列表中。问题是e.message
似乎是一个django.utils.functional.__proxy__
对象,而不是一个字符串,因此我无法将它们连接起来以显示完整的错误消息。在
如何从每个异常中获取错误消息?在
它们是
django.utils.functional.__proxy__
的一个实例,因为Django核心验证器的message
是可翻译的,并包装在ugettext_lazy
中。我认为您可以使用类似", ".join(unicode(e) for e in errors)
的方法来强制评估消息。在相关问题 更多 >
编程相关推荐