美文网首页
Django-18-多对多

Django-18-多对多

作者: 西海岸虎皮猫大人 | 来源:发表于2020-04-08 16:13 被阅读0次

模型

# 课程表 和 教师表 n:n
class Course(models.Model):
    course_id=models.AutoField(primary_key=True)
    course_name=models.CharField(max_length=30,unique=True)

    class Meta:
        db_table='t_course'

    def __unicode__(self):
        return u'Course:%s'%self.course_name

class Teacher(models.Model):
    tid = models.AutoField(primary_key=True)
    tname = models.CharField(max_length=30,unique=True)
    course = models.ManyToManyField(Course)

    class Meta:
        db_table='t_teacher'

    def __unicode__(self):
        return u'Teacher:%s--%s'%(self.tname,self.course)

迁移时会创建一张关联表

插入数据

from stu.models import *
cou1 = Course(course_name='Java')
cou2 = Course(course_name='Python')
cou1.save()
cou2.save()
t1 = Teacher(tname='张老师')
t1.save()
t2 = Teacher(tname='王老师')
t2.save()
t3 = Teacher(tname='李老师')
t3.save()
t1.course.add(cou1)
t1.course.add(cou2)
t2.course.add(cou1, cou2)

查询

Course.objects.first().teacher_set.all()
Teacher.objects.first().course.all()

封装函数插入数据

def insertData(tname,*coursenames):
    cour_name=[]
    
    for c in coursenames:
        try:
            cour = Course.objects.get(course_name=c)
        except Course.DoesNotExist:
            cour = Course.objects.create(course_name=c)
        cour_name.append(cour)
    t = Teacher(tname=tname)
    t.save()
    t.course.add(*cour_name)

insertData('wanglaoshi','语文','数学')

相关文章

  • Django-18-多对多

    模型 迁移时会创建一张关联表 插入数据 查询 封装函数插入数据

  • 多对多

    一、单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细...

  • 多对多

  • 多对多

    可用方法 $user ->roles ()->save () $user ->roles ()->savemany...

  • 多对多

  • Mybatis 多对多

    多对多:

  • SQL多对多

    现有学生表teacher(图1),学生表student(图2),已知张老师的学生有小明小红小敏,王老师的学生有小明...

  • hibernate 多对多

    0.0 参数 class.catalog="指定数据库的,建议删掉" 1.0 简单多对多(双向多对多) 1.1添加...

  • 映射:多对多

  • 多对多双向

    说明: 1、多对多的结构是三张表 2、多对多是类与集合的关系 映射文件

网友评论

      本文标题:Django-18-多对多

      本文链接:https://www.haomeiwen.com/subject/jritmhtx.html