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)

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

  

原文地址:https://www.cnblogs.com/zengxuejie/p/14075149.html