• 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)

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

      

  • 相关阅读:
    swiper 内容超出纵向滚动 解决办法
    js判断 微信浏览器 或者 QQ内置浏览器
    移动端滑动 增加弹性 滑动更加顺畅
    移动端点击激活时背景色
    文字两端对齐
    移动端元素被选中时,去除背景
    CSS动画 防止动画结束后,回归原位
    centos 防火墙配置
    知识图谱研究
    jmeter 压测工具
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14075149.html
Copyright © 2020-2023  润新知