模型表单
模型表单指绑定到模型的表单。自定义的模型表单需扩展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)
网友评论