美文网首页
Django模型表单基本操作

Django模型表单基本操作

作者: Chaweys | 来源:发表于2020-11-04 17:41 被阅读0次

    模型表单
    模型表单指绑定到模型的表单。自定义的模型表单需扩展django.forms模块提供的ModelForm类。
    模型表单基本操作包括定义模型、定义模型表单以及使用模型表单为数据库添加和修改数据。
    
    1、定义模型
    举例:E:\HDCZU_Test\chapter7\app\models.py
    from django.db import models
    class person(models.Model):
        name=models.CharField(max_length=50)
        age=models.SmallIntegerField()
        
    【注】用于模型表单的模型与普通模型并没有任何区别
    
    
    2、定义模型表单类
    举例:E:\HDCZU_Test\chapter7\app\views.py
    from django.forms import ModelForm
    from app.models import person
    class personForm(ModelForm):
        class Meta:
            model=person             #指定模型
            #fields=['name','age']    #指定字段
            fields=['name','age']    #指定字段,即这里指定所有字段
            
    模型表单有两个特点:
    (1)、必须继承django.forms.ModelForm类
    (2)、提供子类Meta,在Meta的model字段中绑定模型,在fields字段中设置在表单中使用的模型字段。也可以使用特殊值"__all__"表示使用模型全部字段:
        如:fields="__all__"
    也可使用exclude属性来排除不使用的字段。实例代码如下:
        如:exclude=['age']
        
        
        
    3、使用模型表单为数据库添加数据
    首先使用数据作为参数来创建模型表单,在调用表单的save()方法将数据写入数据库,如下:
    {使用python的交互环境来添加数据库数据}
    
    >>> from app.models import person
    >>> from app.views import personForm
    >>> one=personFrom({'name':'张三','age':25})
    >>> one.save()
    return Database.Cursor.execute(self, query, params)
    django.db.utils.OperationalError: no such table: app_person
    是因为未进行数据库迁移:
    E:\HDCZU_Test\chapter7>python manage.py makemigrations
    E:\HDCZU_Test\chapter7>python manage.py migrate
    
    >>> one.save()                #保存表单字段数据到数据库
    <person: person object (1)>
    >>> d=person.objects.all()[0] #获取数据库中的第一条记录对象
    >>> d.name,d.age              #查看获取的第一条记录的对象具体值
    ('张三', 25)
    >>>
    
    
    
    4、使用模型表单修改数据库
    在创建模型表单对象时,可使用instance参数指定模型对象,save()方法使用模型表单的数据修改模型对象,从而修改其关联的数据库记录,如下:
    >>> d=person.objects.all()[0]
    >>> d.name,d.age
    ('张三', 25)     #首先获取得知d对象为张三
    
    >>> one=personForm({"name":"李四","age":30},instance=d) #修改d对象,创建关联模型对象的模型表单
    >>> one.save()                    #再次保存表单
    <person: person object (1)>
    >>> d=person.objects.get(id=1)
    >>> d.name,d.age                  #通过模型对象查看修改后的数据
    ('李四', 30)
    

    相关文章

      网友评论

          本文标题:Django模型表单基本操作

          本文链接:https://www.haomeiwen.com/subject/oqquvktx.html