Django ModelForm与Form

  • A+
所属分类:python

django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm

关于django的表单系统,主要分两种

  • 基于django.forms.Form
  • 基于django.forms.ModelForm

表单API

表单有两种状态,绑定,未绑定 Form.is_bound()
Form.is_valid()
验证表单数据是否合法,返回True或者False

Form.errors 错误字典

Form.has_error(field,code=None)

Form.initial 在表单未绑定的情况下,为表单字段设置初始值,

Form.has_changed() 检查表单数据是否变化

From.cleaned_data 表单通过验证后,可以使用cleaned_data属性来访问‘清洁’的数据

Form.as_p() 将表单渲染成< p >标签
From.as_ul() 将表单渲染成< ul >标签
From.as_table() 将表单渲染成< table > 标签
但是这些都得自己添加<table ></table>;< ul >< /ul >标签

设置表单必填行与错误行的样式

Form.error_css_class
Form.required_css_class

然后在css文件中定义error与required类就行了

配置表单元素的HTML id属性,< label >标签

Form.auto_id

From.prefix 可以为Django表单添加一个命名空间

Field.required 表示该字段为必填 缺省为必填项,如需要指定不为必须

Field.label 表示友好的label,表单在页面显示时用到它

Field.help_text 显示字段描述文本

Field.error_message 覆盖默认的错误信息

widget

widget 负责渲染网页上的HTML表单

设置weidget实例样式 利用widget.attrs

自定义了name字段的输入样式为类 special
comment更改的大小为40

内建的weidget

TextInput
NumberInput
EmailInput
URLInput
PasswprdInput
HiddenInput
DateInput 日期
DateTimeInput 日期/时间
TimeInput 时间
Textarea
CheckboxInput
Select
NullBooleanSelect 渲染成 unknown,yes,no三个选项
SelectMultiple
RadioSelect
CheckboxSelectMultiple 复选框列表
FileInput 文件上传
SelectDateWidget

ModelForm表单

使用的时候可以如下:

save()方法

每一个ModelForm都有一个save()方法,这个方法可以更具绑定的form表单创建并且保存一个数据库对象,ModelForm的子类可以接受一个model的子类作为instance的参数,如果存在那么save()方法会更新这个实例,否则会创建一个新的实例

save(commit=False)

save()方法接受一个commit的参数,其值为True或者False。默认为True。
如果你声明 save(commit=False),那么它就会返回一个还未保存至数据库的对象,这样的话 你可以用这个对象添加一些额外的数据,然后在用save()保存到数据库

save_m2m()方法

在save(commit=False)的时候,如果你的model中含有many-to-many的数据模型,那么你将无法使用save()方法去保存数据,只能使用save_m2m()方法来保存
在为声明ave(commit=False),则不用如此保存,用save()就好了..

Selecting the fields to use

1.选择model中所有字段为表单中的字段

例子

2.剔除指定字段的所有数据 exclude

覆盖字段的默认值


文/天天稀饭(简书作者)原文链接:http://www.jianshu.com/p/5664dd79c0ba

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: