Django外键(ForeignKey)操作以及related_name的作用详解


Posted in Python onJuly 29, 2019

之前已经写过一篇关于Django外键的文章,但是当时并没有介绍如何根据外键对数据的操作,也就是如何通过主表查询子表或者通过子表查询主表的信息

首先我定义了两个模型,一个是老师模型,一个是学生模型,一个老师对应多个学生,这个算是一个一对多的类型(如下图所示)

Django外键(ForeignKey)操作以及related_name的作用详解  

那么如果我们要想查询一个老师对应的学生有哪些,该如何操作呢?

首先我们先查询到老师的信息,在这里我们使用python shell 进行演示  ,输入命令python manage.py shell 进入python shell操作界面:

第一步需要做的自然还是需要将我们的模型导入进来,并获取老师的相关信息

Django外键(ForeignKey)操作以及related_name的作用详解

返回一个teacher对象,接下来就是查询teacher相关联的学生对象,在这里有一个需要注意的点,django默认情况下每一个主表的对象都有一个是外键的属性,可以通过它查询到所有关于子表的信息,这个属性的名字就是子表的名称小写加上_set,具体到这个就是student_set,默认返回的是QuerySet,操作如下:

Django外键(ForeignKey)操作以及related_name的作用详解

在这里也会牵涉到另外一个知识点related_name的使用,在models.py使用Foreign定义外键的时候也可以传入一个参数related_name,操作如下:

Django外键(ForeignKey)操作以及related_name的作用详解

执行python manage.py makemigrations 和  python manage.py migrate 

Django外键(ForeignKey)操作以及related_name的作用详解

从上图可以看到和之前的_set操作的效果是一样的,这两个方法是相同的,所以如果觉得比较麻烦的话,可以在定义主表的外键的时候,直接就给外键定义好名称使用related_name

上面的查询主要是通过主表查询子表的信息

下面说一下如何通过子表查询主表的相关信息,也就是查询一个学生所对应的老师的信息

首先需要先获取一个子表的对象,那么就可以通过定义外键时候的那个外键的字段名获取关于主表的信息了

比如我得到了一个student对象,然后我想要得到这个student对象对应的主表teache中的信息的话,就使用  student.teacher 获取,其中这个teacher就是在子表中定义的外键字段,如下:

Django外键(ForeignKey)操作以及related_name的作用详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
python利用Guetzli批量压缩图片
Mar 23 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
python join方法使用详解
Jul 30 Python
基于python实现文件加密功能
Jan 06 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 Python
PyQt5使用QTimer实现电子时钟
Jul 29 #Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 #Python
Python将string转换到float的实例方法
Jul 29 #Python
django foreignkey(外键)的实现
Jul 29 #Python
python实现翻转棋游戏(othello)
Jul 29 #Python
Django如何将URL映射到视图
Jul 29 #Python
python3获取当前目录的实现方法
Jul 29 #Python
You might like
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
php生成微信红包数组的方法
2019/09/05 PHP
prototype1.4中文手册
2006/09/22 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
Python列表推导式的使用方法
2013/11/21 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
利用Python开发实现简单的记事本
2016/11/15 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
八年级语文教学反思
2014/02/11 职场文书
关于安全的演讲稿
2014/05/09 职场文书
质量提升方案
2014/06/16 职场文书
教师求职简历自我评价
2015/03/10 职场文书
垂直极限观后感
2015/06/08 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers