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)

生成三张表: 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

Django ORM 多对多操作 Python 第1张  Django ORM 多对多操作 Python 第2张

Django ORM 多对多操作 Python 第3张

  person录入人员:

Django ORM 多对多操作 Python 第4张

  group录入分组:

Django ORM 多对多操作 Python 第5张

  

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

Django ORM 多对多操作 Python 第6张 

 gp.person.add(2, 3)

Django ORM 多对多操作 Python 第7张

  

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

Django ORM 多对多操作 Python 第8张

  

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: 男人>]>

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄