python-day97--django-ModelForm

Posted Cool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

 

以上是关于python-day97--django-ModelForm的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学Python-day8

python-day2

python-day2 字典

Python-Day3

Python-Day1

python-day2