【发布时间】:2019-12-16 20:26:11
【问题描述】:
我有一个 ModelForm,我想为必填字段自定义一些错误消息。一些自定义错误消息有效,但有些则无效。这是我的代码:
error_messages = {
'photo': {
'required': _("A profile picture is required."),
},
'height': {
'required': _("Your height is required."),
},
'diet': {
'required': _("Your diet is required."), # ~~~~ TODO: not working.
},
'smoking_status': {
'required': _("Your smoking status is required."), # ~~~~ TODO: not working.
},
'relationship_status': {
'required': _("Your relationship status is required."), # ~~~~ TODO: not working.
},
**{to_attribute(name='profile_description', language_code=language_code): {
'required': _("Please write a few words about yourself."),
} for language_code, language_name in django_settings.LANGUAGES},
**{to_attribute(name='city', language_code=language_code): {
'required': _("Please write where you live."), # ~~~~ TODO: not working.
} for language_code, language_name in django_settings.LANGUAGES},
**{to_attribute(name='children', language_code=language_code): {
'required': _("Do you have children? How many?"),
} for language_code, language_name in django_settings.LANGUAGES},
**{to_attribute(name='more_children', language_code=language_code): {
'required': _("Do you want (more) children?"),
} for language_code, language_name in django_settings.LANGUAGES},
**{to_attribute(name='match_description', language_code=language_code): {
'required': _("Who is your ideal partner?"),
} for language_code, language_name in django_settings.LANGUAGES},
'gender_to_match': {
'required': _("Gender to match is required."), # ~~~~ TODO: not working.
},
'min_age_to_match': {
'required': _("Minimal age to match is required."),
},
'max_age_to_match': {
'required': _("Maximal age to match is required."),
},
'diet_match': {
'required': _("Diet match is required."),
},
'smoking_status_match': {
'required': _("Smoking status match is required."),
},
'relationship_status_match': {
'required': _("Relationship status match is required."),
},
}
https://github.com/speedy-net/speedy-net/blob/staging/speedy/match/accounts/forms.py#L100-L149
我标记了不适用于# ~~~~ TODO: not working. 的自定义错误消息。其他人正在工作。
有什么建议吗?
【问题讨论】:
-
您通过直接在表单顶部或表单的
__init__方法中定义这些字段来覆盖这些字段。error_messagesMeta选项仅适用于未被覆盖的字段(它仅被ModelForm用于从Model自动创建字段)。 -
@dirkgroten 如何覆盖这些错误消息?我搜了一下,发现应该是Meta类,是不是对的?
-
好的,我明白了。请看下面我的回答。
标签: python django django-forms modelform