model里面的数据
class TeacherModel(models.Model): teacher_name = models.CharField(max_length=32) class Meta: db_table = ‘teacher‘ class StudentModel(models.Model): student_name = models.CharField(max_length=32) age = models.IntegerField(null=True) home = models.CharField(max_length=32) teacher = models.ManyToManyField(TeacherModel, related_name=‘stu‘) class Meta: db_table = ‘student‘
获取ID为2的老师下所有数据数据
def get(self, request): # 方法一:在建立manytomany的models里查数据 teacherobj = models.TeacherModel.objects.get(id=2) data = teacherobj.stu.all() #这是重点 data_list = [] for i in data: data_dic={ "student_name":i.student_name, "teacher_name":teacherobj.teacher_name } data_list.append(data_dic) return Response(data_list)
获取ID为2的学生所对应的所有老师
# 方法二:在未建立manytomany的models里查数据 studentobj = models.StudentModel.objects.get(id=2) data = studentobj.teacher.all() #这是重点 data_list = [] for i in data: data_dic = { "student_name": studentobj.student_name, "teacher_name": i.teacher_name } data_list.append(data_dic) return Response(data_list)
添加数据(指定添加数据)
# 方法一:在建立manytomany的models里添加数据,(一条,一个对象) teacherobj = models.TeacherModel.objects.filter(id=2).first() studentobj = models.StudentModel.objects.filter(id=4).first() teacherobj.stu.add(studentobj) #重点 return Response({ "status": 200 })
添加数据(给学生添加所有老师)
#方法二:在未建立manytomany的models里添加数据,(一条,一个对象) teacherobj = models.TeacherModel.objects.all() studentobj = models.StudentModel.objects.filter(id=3).first() studentobj.teacher.set(teacherobj) #重点 return Response({ "status": 200 })
修改数据
# 方法一:在建立manytomany的models里修改数据,参数只能是可迭代对象 teacherobj = models.TeacherModel.objects.filter(id=3).first() studentobj = models.StudentModel.objects.filter(id=2) teacherobj.stu.set(studentobj) #重点 return Response({ "status": 200 }) #方法二:在未建立manytomany的models里修改数据,参数只能是可迭代对象 # teacherobj = models.TeacherModel.objects.all() # studentobj = models.StudentModel.objects.filter(id=2).first() # studentobj.teacher.set(teacherobj) #重点 # return Response({ # "status": 200 # })
删除数据
# 方法一:在建立manytomany的models里删除数据,(一条,一个对象) # teacherobj = models.Teacher.objects.filter(id=1).first() # studentobj = models.Student.objects.filter(id=2).first() # teacherobj.stu.remove(studentobj) #重点 # return Response({ # "status": 200 # }) #方法二:在未建立manytomany的models里删除数据,(多条,可迭代对象) teacherobj = models.TeacherModel.objects.all() studentobj = models.StudentModel.objects.filter(id=2).first() studentobj.teacher.remove(*teacherobj) 重点 return Response({ "status": 200 })
原文:https://www.cnblogs.com/qinzeiqinwang/p/13912611.html