多对多关系
指的是关联的两个表中,任意一方表中的一条记录都与另一方表中的多条记录关联。
例如,学生和社团的关系是多对多的关系,一个学生可以加入多个社团,一个社团允许多个学生加入。
定义多对多关系
多对多的关系使用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)
关注个人公众号:测试开发进阶之路