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

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

      

  • 相关阅读:
    338. 比特位计数
    300.最长上升子序列
    git 钩子服务代码
    thinkphp5.1 封装文件上传模块
    Theano 基础
    使用anaconda和pycharm搭建多python本版的开发环境
    GIT常用命令
    Thinkphp 获取数据表随机值
    在Windows中利用.bat提交git代码到不同分支
    Windows .bat 常量
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14074549.html
Copyright © 2011-2022 走看看