您的位置:首页 > 编程语言 > Go语言

Django ModelForm

2017-06-04 00:00 459 查看
Django 的ModelForm 可以让你从 Django 的模型创建 表单

使用ModelForm

1、使用之前需要导入对应app中的模型和 Django ModelForm

from django.forms import ModelForm
from app01.models import Userinfo

2、创建一个 ModelForm 类,并配置 ModelForm 类和Model 对应关系

class UserInfoForm(ModelForm):                # 新建1个类,继承ModelForm
class Meta:
model = UserInfo                      # 对应的 app 中的哪个 Model
fields = ['name', 'password', 'email', 'user_type']   # 对应UserInfo 中的哪些字段
fields = '__all__'                    # 表示需要所有的模型字节


ModelForm 常用class Meta 配置

注意:每个字段后面不要加逗号

class Meta:
model = models.UserInfo            #结尾不用加逗号
fields = '__all__'
# fields =  ['username','email']
# exclude = ['username']            # 除了 XX字段,其他都使用
labels = {                          # label 名称
'username': '用户名',
'email': '邮箱',
}
help_texts = {                     # 帮助信息
'username': '...'
}
widgets = {
'username': Fwidgets.Textarea(attrs={'class': 'c1'})
}
error_messages = {                       # 自定义错误
'__all__':{

},
'email': {
'required': '邮箱不能为空',
'invalid': '邮箱格式错误..',
}
}
field_classes = {                         #字段类型,可以强制修改成其他类型
# 'email': Ffields.URLField
}

# localized_fields=('ctime',)


ModelForm 生成HTML 和 数据验证

生成HTML

1、生成空表单

mf = UserInfoForm()     # 生成空的表单

2、表单中显示初始数据

userobj =models.UseInfo.objects.all()
mf = UserInfoForm( instance = userobj )          # instance  对应模型实例

3、request.POST

obj = UserInfoForm(request.POST)

保存并验证表单

obj = UserInfoModelForm(request.POST)
if obj.is_valid():                         # 验证成功则保存modelsform
obj.save()

注意:此时 obj,svae 不仅保存当前对象实例,还保存实例对应跨表关系(外键,多对多等)
此时 obj.save 在内部执行3个步骤

instance  = userobj(False)               # 生成实例对象
instance.save()                          # 保存实例对象
obj.save_m2m()                           # 保存实例对象对应外键关系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Django ModelForm