多对一关系
指的是关联的两个表中,多方表中有多条记录与一方表中的一条记录关联
例如:员工与工厂,学生和班级都是多对一的关系。
定义多对一关系
多对一的关系使用models.ForeignKey字段进行定义
在modles.py文件内定义多对一关系表
#多对一关系 class banji(models.Model): #班级模型 mc=models.CharField(max_length=8) #班级名称 def __str__(self): return self.mc class xuesh(models.Model): #学生模型 xm=models.CharField(max_length=8) #学生姓名 xh=models.CharField(max_length=8) bj=models.ForeignKey(banji,on_delete=models.CASCADE) #外键,关联班级 def __str__(self): return "%s %s" %(self.xm,self.xh)
保存后cmd进入项目,然后进行数据迁移:
python manage.py makemigrations
python manage.py migrate
迁移完之后,现在还是一个空表,接下来就要对这两张表进行对象创建。
多对一关系对象创建
进入cmd交互页面:python manage.py shell,然后在banji表里创建两个mc,并保存
from faqs.models import banji b1=banji(mc="2020年1班") b2=banji(mc="2020年2班") b1.save() b2.save()
将xuesh与banji班进行关联
from faqs.models import xuesh x1=xuesh(xm="赵一",xh="001",bj=b1) x2=xuesh(xm="赵凉",xh="002",bj=b2) x3=xuesh(xm="赵三",xh="003",bj=b2) x1.save() x2.save() x3.save()
然后查看班级表和学生表的关联状态
学生表
可以看出来,id为2和id为3的学生对应的班级都是2班,这样就可以看出来,多个学生是可以对应一个班级的。
关注个人公众号:测试开发进阶之路