zoukankan      html  css  js  c++  java
  • Django外键(ForeignKey)操作以及related_name的作用

    参考 https://blog.csdn.net/hpu_yly_bj/article/details/78939748
    案例写在自己的orm、db_tools项目练习中,

    cmd中输入:
    python manage.py shell 
    进入python的环境
    from app01.models import Teacher, Student
    teacher = Teacher.objcets.get(id=1)
    teacher
    返回一个teacher对象,接下来就是查询teacher相关联的学生对象,在这里有一个需要注意的点,django默认情况下每一个主表的对象都有一个是外键的属性,可以通过它查询到所有关于子表的信息,这个属性的名字就是子表的名称小写加上_set,具体到这个就是student_set,默认返回的是QuerySet,操作如下:
    teacher.student_set.all()
    

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


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

        上面的查询主要是通过主表查询子表的信息
    
        下面说一下如何通过子表查询主表的相关信息,也就是查询一个学生所对应的老师的信息
    
         首先需要先获取一个子表的对象,那么就可以通过定义外键时候的那个外键的字段名获取关于主表的信息了
    
         比如我得到了一个student对象,然后我想要得到这个student对象对应的主表teache中的信息的话,就使用  student.teacher 获取,其中这个teacher就是在子表中定义的外键字段,如下:
    
    
    
    写入自己的博客中才能记得长久
  • 相关阅读:
    第二章 关系模型介绍
    第一章 引言
    只要人人都献出一点爱......
    小算法
    题目:返回一个整数数组中最大子数组的和。
    题目:返回一个整数数组中最大子数组的和
    梦断代码读后感之开始篇
    电梯调度需求分析
    结对开发--求二维数组的最大子数组
    四则运算(3)--答题小系统
  • 原文地址:https://www.cnblogs.com/heris/p/15799313.html
Copyright © 2011-2022 走看看