模型类
ORM
django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。
在Django中主要是设计类:模型类。
ORM另外一个作用:根据设计的类生成数据库中的表。
模型类设计
在应用models.py中设计模型类。
必须继承与models.Model类。
1) 设计BookInfo类。
2) 设计HeroInfo类。
from django.db import models # Create your models here. # 图书类
class BookInfo(models.Model):
"""图书模型类"""
# 图书名称 CharField是字符串类型,max_length制定字符串最大长度
btitle = models.CharField(max_length=20)
# 出版日期,DateField是一个日期类型
bpub_date = models.DateField() def __str__(self):
# 如果想在admin里看到图书名称 则要重写__str__方法
return self.btitle class HeroInfo(models.Model):
"""英雄人物模型类"""
# 英雄名称
hname = models.CharField(max_length=20)
# 性别, BooleanField说明是bool类型,default制定默认值,False代表男
hgender = models.BooleanField(default=False)
# 备注
hcomment = models.CharField(max_length=128)
# 关系属性 hbook,建立图书类和英雄人物类的一对多关系
# 关系属性对应的表的字段名格式:关系属性名_id
hbook = models.ForeignKey('BookInfo') def __str__(self):
return self.hname
Models.ForeignKey可以建立两个模型类之间一对多的关系,django在生成表的时候,就会在多端的表中创建一列作为外键,建立两个表之间一对多的关系。
模型类生成表
1) 生成迁移文件
命令:python manage.py makemigrations
迁移文件是根据模型类生成的。
2) 执行迁移生成表
命令:python mange.py migrate
根据迁移文件生成表。
生成表名的默认格式:
应用名_模型类名小写
通过模型类操作数据表
进入项目shell的命令:
python manage.py shell
以下为在相互shell终端中演示的例子:
首先导入模型类:
from booktest.models import BookInfo,HeroInfo
1) 向booktest_bookinfo表中插入一条数据。
b = BookInfo() #定义一个BookInfo类的对象
b.btitle ='天龙八部' #定义b对象的属性并赋值
b.bpub_date = date(1990,10,11)
b.save() #才会将数据保存进数据库
2) 查询出booktest_bookinfo表中id为1的数据。
b = BookInfo.objects.get(id=1)
3) 在上一步的基础上改变b对应图书的出版日期。
b.bpub_date = date(1989,10,21)
b.save() #才会更新表格中的数据
4) 紧接上一步,删除b对应的图书的数据。
b.delete() #才会删除
5) 向booktest_heroInfo表中插入一条数据。
h = HeroInfo()
h.hname = '郭靖'
h.hgender = False
h.hcomment
= ‘降龙十八掌’
b2
= BookInfo.objects.get(id=2)
h.hbook
= b2 #给关系属性赋值,英雄对象所属的图书对象
h.save()
6)
查询图书表里面的所有内容。
BookInfo.objects.all()
HeroInfo.objects.all()
关联操作
1) 查询出id为2的图书中所有英雄人物的信息。
b
= BookInfo.objects.get(id=2)
b.heroinfo_set.all()
#查询出b图书中所有英雄人物的信息