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就是在子表中定义的外键字段,如下:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149807.html原文链接:https://javaforall.cn
相关文章
- Django模糊查询「建议收藏」
- Pycharm安装django包[通俗易懂]
- django:convert queryset into list of dicts
- 在 Linux 服务器上使用 Nginx + Gunicorn 部署 Django 项目的正确姿势
- pycharm django环境搭建_挣钱项目
- 使用 PyCharm 远程调试 Django 程序「建议收藏」
- Python进阶25-Django Web框架
- Django学习笔记一初识Django
- pycharm配置django环境_pycharm的terminal默认环境
- Django自动化运维管理平台
- 使用python的Django库开发一个简单的数据可视化网站(二)- 使用Django开发网站
- Django-Admin后台管理内容
- 博客将 Django 1.11+ 升级到 Django 2.2+ 遇到的问题及规避方法
- Python进阶34-Django 中间件
- django pycharm_pycharm调试django
- Django默认控制面板增加module
- Django中的关系映射
- django:Content-Disposition filename:日本語 pdf csv output
- 【愚公系列】2022年02月 Django商城项目 34-订单支付功能实现(支付宝)[通俗易懂]
- Django实现调用腾讯云短信接口