python-day97--django-ModelForm

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()

 

posted @ 2017-12-06 19:24  Cool·  阅读(174)  评论(0编辑  收藏  举报