当前位置: 首页 > 编程笔记 >

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

夹谷茂
2023-03-14
本文向大家介绍Django外键(ForeignKey)操作以及related_name的作用详解,包括了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就是在子表中定义的外键字段,如下:

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

 类似资料:
  • 本文向大家介绍django foreignkey(外键)的实现,包括了django foreignkey(外键)的实现的使用技巧和注意事项,需要的朋友参考一下 foreignkey是一种关联字段,将两张表进行关联的方式,我们在dodels.py里写入要生成的两张表: 运行下面两条命令: C:\Users\Liujiangbu.GLOBALE.001\PycharmProjects\untitled

  • 外键操作 Phinx 支持创建外键限制数据表。下面是一个外键创建例子 <?php use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration { /** * Migrate Up. */ public function up() {

  • 本文向大家介绍pytorch中的上采样以及各种反操作,求逆操作详解,包括了pytorch中的上采样以及各种反操作,求逆操作详解的使用技巧和注意事项,需要的朋友参考一下 import torch.nn.functional as F import torch.nn as nn F.upsample(input, size=None, scale_factor=None,mode='nearest',

  • 本文向大家介绍django 单表操作实例详解,包括了django 单表操作实例详解的使用技巧和注意事项,需要的朋友参考一下 前面视图层,模板层、路由层都写了大概,项目肯定是会和数据库打交道,那就讲讲orm的单表查询吧,直接写过一点点,不太全面。 1、项目刚创建好,我们需要在settings里配置一下(用mysql数据库),配置好了,再去app文件夹里的__init__配置下,其实在 哪个__ini

  • 本文向大家介绍Python 操作MySQL详解及实例,包括了Python 操作MySQL详解及实例的使用技巧和注意事项,需要的朋友参考一下 Python 操作MySQL详解及实例 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。 Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,

  • 本文向大家介绍Python操作MongoDB详解及实例,包括了Python操作MongoDB详解及实例的使用技巧和注意事项,需要的朋友参考一下 Python操作MongoDB详解及实例 由于需要在页面展示MongoDB库里的数据,所以考虑使用python操作MongoDB,PyMongo模块是Python对MongoDB操作的接口包,所以首页安装pymongo。 1、安装命令 2、查询命令: 3、