我为编写了一个自定义验证器,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] 删除。
我来说两句