表单字段验证 - 谁呈现错误?

Form field validation - who renders the error?

我有一个模型,其中包含 2 个 PositiveSmallIntegerField 类型的字段。 我有这个模型和这些字段的 ModelForm

我的验证工作正常。但是如果我输入负数或字母数字字符串,我会收到某种 pop-up 的验证错误(见下图)。我的问题:浏览器是否呈现验证错误? Django 不应该将错误呈现为 HTML 代码吗? 我可以用 django 翻译来翻译这个错误吗?

此外,在我的 clean 表单方法中,我有一个自定义验证,我这样做:

if cleaned_data['capacity_min'] > cleaned_data['capacity_max']:
    raise ValidationError(_("Some message"))

我可以翻译这个,它按照我的预期呈现,页面中的简单 HTML 代码

谢谢

Firefox 就是这样

这就是 Google Chrome 的情况

这些提示错误是由浏览器显示的。浏览器拒绝向服务器提交无效表单,因此您的 django 验证甚至没有 运行.

要解决此问题,请将您的小部件字段从 NumberInput 更改为 TextInput:

class MyForm(forms.ModelForm):

    class Meta:
        ...
        widgets = {
            'capacity_min': forms.TextInput(),
            'capacity_max': forms.TextInput(),
        }