Django中error_messages字典'unique'键来源及可选值列表查询
问题解答
1. unique 错误键的来源
你在表单字段类的源码和文档里找不到这个键很正常,因为unique不属于表单层字段的原生错误类型,它是模型层字段校验抛出的错误:
当你给模型字段设置了unique=True参数时,Django在执行模型字段唯一性校验(包括表单提交时ModelForm自动触发的模型校验、手动调用模型clean()方法两种场景)时,就会抛出键为unique的错误信息,所以这个配置最终是被模型层字段读取生效的。
2. 完整可选键的获取方式
error_messages的可选键分为两类,你可以分别获取对应的列表:
- 表单层基础错误键:就是你之前查到的表单字段类自带的错误类型,你可以直接打印对应字段类的
default_error_messages属性查看所有内置键,比如执行print(CharField.default_error_messages)就能看到required、max_length这类基础键的完整列表,也可以对应查阅官方文档中每个表单字段的说明。 - 附加校验类错误键:包括
unique这类模型层约束对应的错误、自定义校验器抛出的错误、关联字段专属的does_not_exist/invalid_choice等错误,这类键可以查阅Django官方文档的「模型字段校验」章节,也可以查看django.db.models.fields下对应模型字段类的default_error_messages属性,以及你自己添加的自定义校验器返回的错误键。
补充说明:如果你的项目里用的是ModelForm,表单会自动继承关联模型字段配置的
error_messages,所以你在模型字段里定义的unique错误信息,会自动同步到对应的表单字段校验逻辑中生效。
内容的提问来源于stack exchange,提问作者pilky01
相关产品推荐
相关产品推荐

