使用ModelForm校验数据唯一性
在设计模型类的时候,将指定字段设置unique=true属性,可以保证该字段在数据库中的唯一性。
使用ModelForm可以将指定模型类快速生成表单元素。在提交数据后,使用is_valid()校验时,如果模型类的某个字段设置过unique属性,那么ModelForm就会对其进行数据唯一性校验,校验通过后才允许该数据插入数据库
因为ModelForm继承自BaseModelForm,而BaseModelForm中的全局钩子函数 clean中做设置了校验数据唯一性的操作:
这个设置在普通Form对象中是没有的(普通Form继承的是BaseForm):
使用ModelForm校验数据唯一性需要注意:
如果重写了父类的clean方法,必须将self._validate_unique=True带上,否则该ModelForm对象不会对数据进行唯一性校验。并且在插入数据时会发送如下错误: