无法在Django custom valid中获取异常消息

2024-10-02 10:34:30 发布

您现在位置:Python中文网/ 问答频道 /正文

如果你能很容易地通过一个比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__对象,而不是一个字符串,因此我无法将它们连接起来以显示完整的错误消息。在

如何从每个异常中获取错误消息?在


Tags: self消息message列表valuemodelsdef错误
1条回答
网友
1楼 · 发布于 2024-10-02 10:34:30

它们是django.utils.functional.__proxy__的一个实例,因为Django核心验证器的message是可翻译的,并包装在ugettext_lazy中。我认为您可以使用类似", ".join(unicode(e) for e in errors)的方法来强制评估消息。在

相关问题 更多 >

    热门问题