zoukankan      html  css  js  c++  java
  • 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班,这样就可以看出来,多个学生是可以对应一个班级的。

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

      

  • 相关阅读:
    iOS开发 -------- transform属性(形变)
    iOS开发 -------- UITableView的编辑
    iOS开发 -------- 九宫格坐标计算
    Alcatraz的安装和使用
    Python实现简单抓取功能
    预备作业:课程基础
    预备作业:课程基础
    预备作业
    oracle常用命令总结
    在Linux下写一个线程池以及线程池的一些用法和注意点
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14074549.html
Copyright © 2011-2022 走看看