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

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

      

  • 相关阅读:
    剑指offer-整数中1出现的次数
    剑指offer-连续子数组的最大和
    剑指offer-最小的k个数
    剑指offer-数组中超过一半的数字
    剑指offer-二叉搜索树与双向链表
    剑指offer-复杂链表的复制
    剑指offer-二叉树中和为某一值的路径
    剑指offer-二叉搜索树的后序遍历
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14075149.html
Copyright © 2020-2023  润新知