Django ORM 多对多操作

models.py 

1 class Person(models.Model):
2     name = models.CharField(max_length=32)
3 
4 
5 class Group(models.Model):
6     name = models.CharField(max_length=32)
7     person = models.ManyToManyField(Person)

生成三张表: 

  

  person录入人员:

  group录入分组:

  

1 # 正向添加对应关系
2  gp = Group.objects.get(id=1)
3  gp.person.add(1)

 

 gp.person.add(2, 3)

  

1 # 反向添加对应关系
2 p = Person.objects.get(id=1)
3 p.group_set.add(4)

  

1 # 正向查询
2 >>> gp = Group.objects.get(id=1)
3 >>> gp.person.all()
4 <QuerySet [<Person: 刘备>, <Person: 关羽>, <Person: 张飞>]>
5 
6 # 反向查询
7 >>> p = Person.objects.get(id=1)
8 >>> p.group_set.all()
9 <QuerySet [<Group: 蜀国>, <Group: 男人>]>

 

posted @ 2020-07-15 16:10  北斗星君  阅读(30)  评论(0编辑  收藏