BooleanField自定义验证器不起作用

罗恩

我为编写了一个自定义验证器,BooleanField以确保使用true保存对象我从这篇文章中得到了这个主意

这是我的模型:

terms_accepted = models.BooleanField(u"Terms accepted", validators=[validate_boolean])

这是自定义验证器:

def validate_boolean(value):
if not value:
    raise ValidationError(u"Durp!")

但是验证器永远不会执行。我在其中放置了一个调试断点,但是什么也没有发生。

我之前(在IntegerFields上)使用过非自定义验证器,它们的作用就像一个超级按钮,例如:

validators=[MinValueValidator(1900), MaxValueValidator(2014)]

有什么想法我可能做错了吗?还是可能是一个django错误?

谢谢罗尼

鲁德拉

根据文档用于验证对象:

您可以clean_fields(exclude=None)验证模型中的所有字段(除外)exclude

文档:

请注意,保存模型时,验证器不会自动运行,但是如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证器。

有关在此处进行验证的更多信息

编辑

对于特定于字段的错误,clean_<field>()可以在中使用forms例子:

terms_accepted= forms.BooleanField()
-------
-------
def clean_terms_accepted(self):
    data = self.cleaned_data
    if data['terms_accepted'] is not None:
        return True
    else:
        msg="Durp!"
        self._errors["terms_accepted"] = self.error_class([msg])
        return False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章