ModelForm(耦合很强)
可以实现
1:数据库操作
2:数据验证
使用地方:1:小型项目,2:自定制jdango admin
功能:
1:可以生成html标签:class Meta...
2:mf = xxxModelForm(instance=ModelObj)
3:额外的标签:is_rmb=Ffields.CharField(widget=Fwidgets.CheckboxInput())
4:各种验证,is_valid() ->各种钩子
5:mf.save()
或
instance = mf.save(False)
instance.save()
mf.save_m2m()
class UserInfoMF(forms.ModelForm):
class Meta:
model = models.Uname # 对应的model
fields = '__all__' # 字段
fields = ['..','..'] # 指定字段名
exclude = ['..'] # 排除的字段名
labels = { # 提示信息
'name':'用户名',
'email':'邮箱'
}
help_texts = { # 标签后的提示信息
'name':'提示信息'
}
widgets = { # 因为Charfield默认是input标签,从这里可以自定义指定标签
'name':Fwidgets.Textarea(attrs={'class':'c1'})
}
error_messages = { # 字段错误提醒
'__all__':{整体的错误信息}
'email':{ 'required':'邮箱不能为空','invalid':'邮箱格式不对'}
}
field_classes = { # 自定义字段类,这里是将input标签的email的字段修改为url属性
'email':Ffields.URLField
}
localized_fields = ('ctime') # 指定哪些字段使用东八区时间,也就是本地化