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

作者:leeyongbard 时间:2023-03-15 22:48:09 

之前已经写过一篇关于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的作用详解

来源:https://blog.csdn.net/hpu_yly_bj/article/details/78939748

标签:Django,外键,related,name
0
投稿

猜你喜欢

  • SQL Server误区30日谈 第7天 一个实例多个镜像和日志传送延迟

    2024-01-16 19:01:01
  • python读取目录下所有的jpg文件,并显示第一张图片的示例

    2023-06-21 16:31:58
  • python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法

    2023-05-07 03:01:23
  • MySQL学习之数据库操作DML详解小白篇

    2024-01-14 11:59:48
  • php集成环境xampp中apache无法启动问题解决方案

    2023-07-17 22:44:52
  • mysql多表查询的几种分类详细

    2024-01-28 14:43:21
  • php中ob_flush函数和flush函数用法分析

    2023-11-15 06:12:59
  • MySQL字符集乱码及解决方案分享

    2024-01-21 12:00:43
  • Python基于Django实现验证码登录功能

    2023-06-25 03:21:13
  • 在Python下进行UDP网络编程的教程

    2021-10-16 08:08:20
  • 常见Dreamweaver使用过程中的问题及解决办法

    2011-03-17 16:16:00
  • 探究MySQL优化器对索引和JOIN顺序的选择

    2024-01-14 14:36:00
  • python实现飞船大战

    2022-09-19 02:17:26
  • SqlServer中tempdb的日志机制原理解析及示例分享

    2024-01-15 20:31:38
  • Python使用BeautifulSoup4修改网页内容的实战记录

    2023-04-10 15:59:56
  • jquery 常用操作

    2010-01-12 16:00:00
  • python的pstuil模块使用方法总结

    2022-10-09 22:47:16
  • python批量压缩图像的完整步骤

    2022-05-14 16:10:47
  • Go项目实现优雅关机与平滑重启功能

    2023-07-16 07:36:13
  • asp.net微信开发(永久素材管理)

    2023-07-21 13:02:45
  • asp之家 网络编程 m.aspxhome.com