在 Mysql 中一对多是通过外键实现的,在 django 模型中通过 ForeignKeyField 类型实现。
在 Mysql 中一对一是通过外键加唯一键实现的,在 django 模型中通过 OneToOneField 类型实现。
在 Mysql 中多对多是通过中间表外键加联合唯一键实现的,在 django 模型中通过 ManyToManyField 类型实现。中间表模型会自动创建。
例子:
学院---学生---课程---学生成绩
学院与学生一对一关系,学生与课程多对多关系
课程
学生成绩
关系表中数据的操作 :
同级目录下的 views.py
from django.http import HttpResponse
from .models import Department, Student, Course
def add_info(request):
# 新增部门
d1 = Department(d_name='IT')
d1.save()
# 一对多关系添加内容
s1 = Student(s_name='yuntuan')
# 将学生 s1 添加到 学院 d1
s1.department = d1
s1.save()
# 多对多关系添加内容
# 新增 python 课程
c1 = Course(c_name='python')
# 将 python 课程给学生表中的第一位学生 s2
s2 = Student.objects.first()
c1.save()
s2.course.add(c1)
return HttpResponse("添加数据成功")
def search_info(request):
rs = Student.objects.all()[0]
# 一对多的查询
print(rs.department)
# 多对多的正向查询
print(rs.course.all())
cs = Course.objects.first()
# 多对多的反向查询
print(cs.student_set.all())
return HttpResponse("查询数据成功")