前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django基础篇-模型表关系

Django基础篇-模型表关系

作者头像
小团子
发布2019-07-18 11:09:04
8350
发布2019-07-18 11:09:04
举报
文章被收录于专栏:数据云团数据云团
  • 一对多表关系

在 Mysql 中一对多是通过外键实现的,在 django 模型中通过 ForeignKeyField 类型实现。

框架篇-Django博客应用-更新首页

  • 一对一表关系

在 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("查询数据成功")

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档