zoukankan      html  css  js  c++  java
  • mangtomant 增删改查

    Django下ManytoMany 增删改查

    建立学生类老师类多对多关系,用ManytoManyField,迁移同步后自动生成中间表tb_Teacher_Student


    # 学生类

    class Student(models.Model):

      name = models.CharField(max_length=32)

       class Meta:

         db_table = 'tb_Student'

    # 老师类

    class Teacher(models.Model):

       name = models.CharField(max_length=32)

       students = models.ManyToManyField('Student',related_name='teacher')

       class Meta:

         db_table = 'tb_Teacher'

    增,改add()

    t1=Teacher(name='jotaro') # 实例化老师

    s1=Student(name='dio') # 实例化学生

    t1.students.add(s1)

    t1.save()

    s1.save()

    print(t1.name)

    # 批量建立对象多对多的关系,存在则覆盖 set()

    t1=Teacher(name='jotaro')

    s1=Student(name='dio')

    s2=Student(name='kira')

    s3=Student(name='paul')

    s1.save()

    s2.save()

    s3.save()

    t1.save()

    t1.students.add(s1)

    print(t1.students.all())

    t1.students.set([s2,s3])

    print(t1.students.all())

    1.delete(),当删除其中一方的对象,多对多表里对应的关系行也自动删除

    teacher = Teacher.objects.get(students__name='kirakira')

    print(teacher.students.all())

    stu = Student.objects.get(name='kirakira')

    stu.delete()

    print(teacher.students.all())

    如果单纯想去除单个学生和老师的多对多关系,而不想删除任何一方的数据,可以用remove()

    t1=Teacher(name='jotaro')

    s1=Student(name='dio')

    s1.save()

    t1.save()

    t1.students.add(s1)

    print(t1.students.all())

     t1.students.remove(s1)

    print(s1)

    print(t1.students.all())

  • 相关阅读:
    mysql错误Error(1133): Can’t find any matching row in the use
    xtrbackup备份mysql
    配置Mysql审计
    Mysql:sql语句
    mysql基准测试与sysbench工具
    tomcat排错以及优化
    nginx反向代理
    Nginx
    服务器归分第一篇
    Android安装BusyBox(三星N7108)
  • 原文地址:https://www.cnblogs.com/plyc/p/14416655.html
Copyright © 2011-2022 走看看