表单

144 阅读2分钟

表单与模型

表单类Form 继承父类BaseForm和元类DeclarativeFieldMetaclass,大部分的属性和方法由baseForm定义,主要有:

*data 字典形式的数据,键名为表单字段

*auto_id 默认值为id_%s,以字符串格式化表示,若设置元素控件的id为job,控件属性就为id_job

*prefix 默认为none 设置表单控件的name和id属性

*initial 默认为none 以字典形式 在表单实例化过程中设置初始化值

*label_suffix 默认为冒号

*field_order 默认为none 以表单字段定义的先后进行排序

*use_required_attribute 默认为none 为表单字段的控件设置requi属性

*error() 验证表单数据是否异常

*is_valid() 验证表单数据是否异常

*as_table() 将表单字段以<table标签生成表单

*as_ul() 将表单字段以<ul标签生成表单

*as_p() 将表单字段以<p生成表单

*has_changed() 对比提交的表单数据与初始化数据是否改变

表单类都不同类型的字段都有共同的参数:

*required 输入是否为空 默认为true

*widget 设置控件样式

*label 生成label标签的类容

*initial 生成字段初始值

*help_text 设置提示信息

*error_messages 设置错误信息

*show_hidden_initial 是否在控件前加一个隐藏且具有默认值的控件

*validators 自定义验证规则

*localize 设置本地化

*disabled 控件是否可以编辑

*label_suffix 设置label的后缀内容

模型表单类ModelForm是基于Form生成的,该类继承父类BaseModelForm和底类BaseForm的属性和方法,其中BaseModelForm类的属性和方法主要有:

*instance 将模型查询的数据传入模型表单,作为初始化数据

*clean() 重写父类BaseForm的方法,将_validate_unique设为true

*validate_unique() 验证表单数据是否异常

*_save_m2m() 将带有多对多关系的模型保存到数据库

*save() 保存数据到数据库

模型表单类只提供了数据保存方法,并没有提供数据交互。数据交互由函数modelform_factory实现,该函数定义了九个属性:

*model 绑定的model对象

*fields 设置模型内哪些字段转为表单字段

*exclude 禁止模型字段转为表单字段

*labels 设置表单字段的label

*widgets 设置表单字段的widget

*localized_fields 将模型字段设为本地化的表单字段

*field_classes 将模型字段重新定义

*help_texts 设置表单参数help_text

*error_messages ...