我有一个用Django和Django Rest Framework开发的API。我有一个带有DecimalField的模型,它应该存储至少一个值。因此,我已按以下方式定义了该字段:
goal = models.DecimalField(decimal_places=2, max_digits=16, validators=[MinValueValidator(1)])
当我创建调用API的对象(使用DRF的ModelViewSet)时,我可以创建具有负“目标”的对象,因此验证器似乎不起作用(我已将它包含在模型序列化器中)。
有什么想法吗?
答案 0 :(得分:2)
验证器仅在使用Django的ModelForm
时自动运行。否则,您需要自己触发验证,通常是通过调用模型对象的full_clean()
方法。
请参阅https://docs.djangoproject.com/en/1.9/ref/validators/#how-validators-are-run
答案 1 :(得分:1)
{{1}}
答案 2 :(得分:1)
这是Django REST框架3.3.x的a known bug。您可以通过降级到3.2.5暂时“修复”问题,或者等待3.3.3发布(应包括修复)。
DRF目前正在过滤Django中的验证器< 1.9,这就是它实际上没有被运行的原因。