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

 更新时间:2019年07月29日 11:24:46   作者:leeyongbard  
这篇文章主要介绍了Django外键(ForeignKey)操作以及related_name的作用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

  

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

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

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

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

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

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

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

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

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

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

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

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

相关文章

  • 利用pandas进行数据清洗的方法

    利用pandas进行数据清洗的方法

    本文主要介绍了利用pandas进行数据清洗的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • python requests 库请求带有文件参数的接口实例

    python requests 库请求带有文件参数的接口实例

    今天小编就为大家分享一篇python requests 库请求带有文件参数的接口实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Pytorch实现将label变成one hot编码的两种方式

    Pytorch实现将label变成one hot编码的两种方式

    这篇文章主要介绍了Pytorch实现将label变成one hot编码的两种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python内置函数zip详解

    python内置函数zip详解

    这篇文章主要为大家介绍了python内置函数zip,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python Socket之客户端和服务端握手详解

    python Socket之客户端和服务端握手详解

    这篇文章主要为大家详细介绍了python Socket之客户端和服务端握手,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Python的Django框架中的数据库配置指南

    Python的Django框架中的数据库配置指南

    这篇文章主要介绍了Python的Django框架中的数据库配置指南,文中举了Python内置的SQLite的示例,需要的朋友可以参考下
    2015-07-07
  • Python help()函数用法详解

    Python help()函数用法详解

    这篇文章主要介绍了Python help()函数的作用,并举例说明它的详细用法,需要的朋友可以参考下
    2014-03-03
  • 解决python2.7 查询mysql时出现中文乱码

    解决python2.7 查询mysql时出现中文乱码

    这篇文章主要介绍了python操作mysql中文显示乱码的解决方法,是Python数据库程序设计中经常会遇到的问题,非常具有实用价值,需要的朋友可以参考下
    2016-10-10
  • 基于Python log 的正确打开方式

    基于Python log 的正确打开方式

    下面小编就为大家分享一篇基于Python log 的正确打开方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 详解Python openpyxl库的基本应用

    详解Python openpyxl库的基本应用

    这篇文章主要介绍了Python openpyxl库的基本应用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-02-02

最新评论