python的类名--------------->SQL语句的表名 python的类属性--------------->SQL语句的表名下的字段 python的类属性的约束--------------->SQL语句的表名下的字段类型 类的实例对象--------------->表中的一条记录
1、建立表(创建模型)html
一、建立类(建立表)python
在应用的models.py文件中建立类,以下例:sql
from django.db import models class Student(models.Model): #必须继承models.Model类 sid=models.AutoField(primary_key=True) #主键且自增 name=models.CharField(max_length=11) #字符串类型,且最大字符数为11 birth=models.DateField() #日期类型,如:Y-m-d
而后在terminal执行以下两条命令后,会自动执行models.py文件,将定义的类生成对应的表:数据库
python manage.py makemigrations python manage.py migrate
若是咱们须要在已经建好的表中增长字段,那么咱们只须要在对应的类中增长字段,而后从新执行上述两条命令便可,可是须要强调的是,增长的字段必须设置默认值,不然执行命令时会成功。设置默认值是为了保证以前已经插入的数据行的新增字段有值。以下例:django
from django.db import models class Student(models.Model): sid=models.AutoField(primary_key=True) name=models.CharField(max_length=11) birth=models.DateField() age=models.IntegerField( default=3) #整数类型,为后来新增字段,须要设置默认值
2、添加数据app
models文件只负责定义类(建立表),表数据的增删改查是在views视图函数中执行,以下添加数据实例:函数
from app01.models import Student def add(request): if request.method=="POST": stu_name=request.POST.get("name") stu_birth=request.POST.get("birth") stu_age=request.POST.get("age") #方式一: s=Student(name=stu_name,birth=stu_birth,age=stu_age) s.save() #保存数据到数据库 #方式二: Student.objects.create(name=stu_name,birth=stu_birth,age=stu_age) return redirect("/index/") return render(request,"add.html")
上述实例须要注意一点:虽然models.py文件和views.py文件在同一应用目录下,可是在上述引用模块时不能写成from models import Student,由于执行咱们项目的文件是manage.py文件,并不与应用app01下的文件在同一级目录,而是与app01文件同级,因此根本找不到对应的模块。spa
表数据的增删改查操做,其实会被翻译成相应的sql语句,在setting文件中进行以下设置,便可在进行数据操做时在屏幕打印相应的sql语句:翻译
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
执行添加函数后屏幕打印的结果:code
3、编辑数据
首先按照ORM方式,查询到符合要求的queryset对象,而后update()将符合要求的对象进行更新,实例以下:
from app01.models import Student def edit(request,id): if request.method=="POST": stu_name=request.POST.get("name") stu_birth=request.POST.get("birth") stu_age=request.POST.get("age") Student.objects.filter(tid=id).update(name=stu_name,birth=stu_birth,age=stu_age) return redirect("/index/") stu=Student.objects.filter(tid=id)[0] return render(request,"edit.html",{"stu":stu})
4、删除数据
首先按照ORM方式,查询到符合要求的queryset对象,而后delete()将符合要求的对象进行删除,实例以下:
def delet(request,id): Student.objects.filter(tid=id).delete() return redirect("/index/")