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

问题描述

在我的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')” 的原因。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...