zoukankan      html  css  js  c++  java
  • Python Web开发学习-Django(13)多对多关系

    多对多关系

    指的是关联的两个表中,任意一方表中的一条记录都与另一方表中的多条记录关联。

    例如,学生和社团的关系是多对多的关系,一个学生可以加入多个社团,一个社团允许多个学生加入。

    定义多对多关系

    多对多的关系使用models.ManyToManyField字段进行定义

    在modles.py文件内定义多对多关系表

    #多对多关系
    class shet(models.Model):                   #社团模型
        mc=models.CharField(max_length=8)       #社团名称
        def __str__(self):
            return self.mc 
    class stus(models.Model):                   #学生模型
        xm=models.CharField(max_length=8)       #学生姓名
        shets=models.ManyToManyField(shet)      #外键,关联社团
        def __str__(self):
            return self.xm

    保存后cmd进入项目,然后进行数据迁移:

     python manage.py makemigrations 

     python manage.py migrate 

     迁移完之后,现在还是一个空表,接下来就要对这两张表进行对象创建。

    多对一关系对象创建

     进入cmd交互页面:python manage.py shell,然后在shet表里创建三个社团,并保存

    from faqs.models import shet
    s1=shet.objects.create(mc="文学社")
    s2=shet.objects.create(mc="柔道社")
    s3=shet.objects.create(mc="舞蹈社")

    然后在stus表里创建学生对象,并关联到shet表

    from faqs.models import stus
    x1=stus.objects.create(xm="李爽")
    x1.shets.add(s1)

    查看是否添加成功: x1.shets.all() 

    创建社团并关联关系: x2.shets.create(mc="英语社") 

    也可以通过循环的方式查看:

    xlss = x2.shets.all()
    for a in xlss:
         print(a.id,a.mc)

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

      

  • 相关阅读:
    ES6 学习记录
    Windows 服务开发 以及 重启IIS应用池
    IIS部署.net core 3.1踩坑总结
    VS 2019背景全透明以及插件、特效
    深拷贝和浅拷贝的区别
    Vue全家桶以及常用知识点
    C#设计模式
    博客园装扮教程
    Exp5 单元测试
    Exp4 代码评审
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14075149.html
Copyright © 2011-2022 走看看