【问题标题】:Django How to override default form error messagesDjango如何覆盖默认表单错误消息
【发布时间】:2023-03-31 13:09:02
【问题描述】:

forms.py

class PhoneForm(forms.ModelForm):
    emergency_number = forms.IntegerField(required=False,error_messages={'required': 'Enter a valid phone number'})

在验证输入的数据是数字时,我收到默认的 django 错误消息 "Enter a whole number"。而不是我希望它是 "Enter a valid phone number"

从 Doc 我使用上述方法,但出现相同的消息。如何解决。

谢谢

【问题讨论】:

    标签: python django django-forms django-templates django-admin


    【解决方案1】:

    这样定义你的字段:

    emergency_number= forms.IntegerField(
                          required=False, 
                          error_messages={'invalid':'Enter a valid phone number'}
                      )
    

    在文档中查看 IntegerField 的错误键是 4:

    required, invalid, max_value, min_value
    

    因此,您必须在要覆盖的 error_messages dict 中包含键。

    顺便说一句,required 永远不会被抛出,因为您指定的是 required=False

    希望这会有所帮助!

    【讨论】:

    • 我发现这是覆盖error_messages的最简单方法。我也没有意识到每个表单字段都有默认的错误键,这让事情变得更容易理解。谢谢!
    【解决方案2】:

    您还需要为invalid 值指定消息,如

    class PhoneForm(forms.ModelForm):
        emergency_number = forms.IntegerField(required=False,
             error_messages={'required': 'Enter a valid phone number',
                             'invalid': 'Enter a valid phone number'}
                            )
    

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 2019-03-20
      • 1970-01-01
      • 2011-02-25
      • 2019-09-13
      • 2011-06-22
      • 1970-01-01
      • 2021-06-09
      • 2012-10-18
      相关资源
      最近更新 更多