Model Form :直接利用你的models里的字段
应用场景:
- ModelForm - 中小型应用程序(model是你自己写的)
- Form - 大型应用程序
注意事项:
- 1. 类
from django.shortcuts import render,redirect,HttpResponse
from app01 import models
from django.forms import Form,ModelForm
from django.forms import fields
from django.forms import widgets as wd
class Foo(ModelForm):
title = fields.CharField(max_length=6,required=True,widget=wd.Textarea()) #可以自定义字段,如果该字段与下面的表内的字段不冲突,那就会增加一个,如果冲突就会覆盖下方类中的字段
class Meta:
# model = models.Role #Role表内的所有字段就直接拿过来了
# fields = "__all__" #指定字段
# fields = ['caption',] #指定字段
# exclude = ['catpion'] #指定字段
model = models.UserType
fields = "__all__"
error_messages = {
'title':{'required':'名称不能为空','invalid':'格式错误'}
}
widgets = {
'title':wd.TextInput(attrs={'class':'c1'})
}
# 钩子函数
- 2. 添加
GET:
form = Foo()
POST:
form = Foo(data=request.POST)
form.is_valid()
form.cleaned_data
form.save() #直接把干净的数据帮你创建了记录,无论是单表还是多表
form.erros
- 3. 修改
GET:
form = Foo(instance=obj)
POST:
form = Foo(instance=obj,data=request.POST) #如果不写instance=obj数据库会多增加一条记录不会修改,给它一个对象表示向对象修改数据
...
form.save()