zengxuejie

导航

Python Web开发学习-Django(12)多对一关系

多对一关系

指的是关联的两个表中,多方表中有多条记录与一方表中的一条记录关联

例如:员工与工厂,学生和班级都是多对一的关系。

定义多对一关系

多对一的关系使用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班,这样就可以看出来,多个学生是可以对应一个班级的。

关注个人公众号:测试开发进阶之路

  

posted on 2020-12-04 09:59  曾小懒  阅读(201)  评论(0)    收藏  举报