定义模型
有一个数据表就对应有一个模型
在models.py文件中定义模型
引入:from django.db import models
模型类要继承models.Model类
示例:
class Grades(models.Model):
gname = models.CharField(max_length=20)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Students(models.Model):
sname = models.CharField(max_length=20)
sgender = models.BooleanField(default=True)
sage = models.IntegerField()
scontend = models.CharField(max_length=20)
isDelete = models.BooleanField(default=False)
sgrade = models.ForeignKey("Grades", on_delete=models.CASCADE,)
说明:
不需要定义主键,在生成时自动添加,并且值为自动增加
在数据库中生成数据表
生成迁移文件
执行 python manage.py makemigrations 在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据表
执行迁移
执行 python manage.py migrate 相当于执行MySQL语句创建了数据表
测试数据操作
进入到python shell
执行 python manage.py shell
引入包
from myApp.models import Grades, Students
from django.utils import timezone
from datetime import *
查询所有数据
类名.objects.all()
示例:
Grades.objects.all()
添加数据
本质:创建一个模型类的对象实例
示例:CMD窗口下:
grade1 = Grades()
grade1.gname = "python04"
grade1.gdate = datetime(year=2017, month=7, day=17)
grade1.ggirlnum = 3
grade1.gboynum = 70
grade1.save()
查看某个对象
类名.objects(pk=索引号)
示例:
Grades.objects.get(pk=2)
Grades.objects.all()
修改某个数据
模型对象属性 = 新值
示例:
grade2.gboynum = 60
grade2.save()
删除数据
模型对象.delete()
grade2.delete()
注意:这是物理删除,数据库中的相应数据被永久删除
关联对象
示例:
stu = Students()
stu.sname = "Xue Yanmei"
stu.sgender = False
stu.sage = 20
stu.scontend = "I am Xue Yanmei"
stu.sgrade = grade1
stu.save()
获得关联对象的集合
需求:猎取python04班级的所有学生
对象名.关联的类名小写_set.all()
示例:grade1.students_set.all()
需求:创建曾志伟,属于python04班级
示例:
stu3 = grade1.students_set.create(sname=u'Zhen Zhiwei',sgender=True,scontend=u"I am Zhen Zhiwei",sage=45)
注意:这样创建的数据直接被添加到了数据库当中。