zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    JsCV Core v0.2发布 & Javascript图像处理系列目录
    Javascript图像处理
    SOE开发之IMapServerSourceDescription
    SOE之JSONObject
    SOE开发之adddynamiclayertomapserver
    JavaScript 的 async/await
    ArcGIS Engine开发系列:将地图导出为图片的两种方法(ZZ)
    原型链
    更优美的javaScript(2)
    CSS选择器
  • 原文地址:https://www.cnblogs.com/cjxxl1213/p/13598870.html
Copyright © 2011-2022 走看看