Django基础008--model多对多

1.多对多表结构设计

class Student(models.Model):
    name = models.CharField(verbose_name='学生名字',max_length=100)

    class Meta:
        db_table = 'student'

class Teacher(models.Model):
    name = models.CharField(verbose_name='老师名字',max_length=100)
    student = models.ManyToManyField(Student,verbose_name='学生')

    class Meta:
        db_table = 'teacher'

2.多对多绑定关系

#多对多关系
teacher_obj = models.Teacher.objects.get(id=2)
student_obj = models.Student.objects.get(id=4)
#谁和谁去建立多对多关系
#创建多对多关系 方法1 add方法可以接受对象
teacher_obj.student.add(student_obj)
#创建多对多关系,方法2 add方法可以接收主键id
teacher_obj.student.add(3)#

3.删除

#删除多对多关系
teacher_obj.student.clear()

#删除指定数据
teacher_obj.student.remove(2)  #接收主键id

teacher_obj.student.remove(student_obj)#接收对象


teacher_obj.student.set([1,2,3,4])#新增,每次都会先删除所有的绑定关系,再新增,比如一个老师去别的班当班主任了

4.查询

#查询多对多关系
#正向查询
#获取这个老师有哪些学生
students = teacher_obj.student.all()
print('students',students)
#反向查询
#根据这个学生,查询这个学生有几个老师
teachers = student_obj.teacher_set.all()
print('teachers',teachers)
posted @ 2020-09-01 21:56  cjxxl1213  阅读(185)  评论(0编辑  收藏  举报