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