首页 > 其他 > 详细

orm之多对多

时间:2020-11-02 08:35:03      阅读:34      评论:0      收藏:0      [点我收藏+]

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
        })

 

orm之多对多

原文:https://www.cnblogs.com/qinzeiqinwang/p/13912611.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!