如何在Django模型中正确使用验证消息

时间:2020-08-31 07:29:44

标签: django django-validation

在我的Django应用中,我正在其中一个模型中使用PositiveSmallIntegerField,其中该字段的最小值已指定为:

trc_frequency = models.PositiveSmallIntegerField(default=1, validators=[MinValueValidator(1)], ...)

现在发生的是,当以小于1的值(零或负值)形式输入值时,系统显示的错误消息实际上是:

确保此值大于或等于 0

鉴于此,因为为该字段定义的最小值为“ 1”(一个),所以我希望该消息通知用户该字段的最小允许值为 1(一个)

效果:

确保此值大于或等于 1

到目前为止,我已经尝试过:

trc_frequency = models.PositiveSmallIntegerField(default=1, validators=[MinValueValidator(1, _('Must ensure this value is greater than or equal to %(limit_value)s.'))],...)

但是仍然获得错误消息中指定的最小值 1(零)。更令人惊讶的是,消息文本也没有从确保该值是... 必须确保该值是.. 。为什么?

我要去哪里了

编辑

forms.py

class CreateTrcFreqForm(forms.ModelForm):
    class Meta:
        model = TrcFrequency
        fields = ('aud_freq_id', 'short_text', 'trc_frequency')

        widgets = {
            'freq_id': forms.TextInput(attrs={'style': 'width:40px; text-align:left'}),
            'short_text': forms.TextInput(attrs={'style': 'width:300px; text-align:left'}),
            'trc_frequency': forms.TextInput(attrs={'style': 'width:40px; text-align:right'}),
            }

##        error_messages = {
##            'trc_frequency': {
##                'min_value': _('Frequency value must be >= 1') # %(limit_value)s')
##            }
##        }

error_messages段已被注释,以在models.py本身中测试验证。但是,即使在表单验证中,使用%(limit_value)s')也会得到“ 0(零)” NOT 1(一个)。您可以看到硬编码值“ ...必须为> = 1')” 的原因。

0 个答案:

没有答案