首页 > 其他分享 >【django学习-18】数据表操作之多表查询

【django学习-18】数据表操作之多表查询

时间:2022-10-02 20:45:01浏览次数:48  
标签:publisher name 18 外键 django 数据表 Book 查询

  • 在日常开发只,常常需要对多张数据表同时进行数据查询;多表查询需要在表建立的时候建立表关系才能够实现,下面还是以之前的模型为例。下面是数据表数据

    • book表的外键字段publisher
  • 正向查询

#查询模型Book某行数据对应的b
b = Book.objects.filter(id=1).first()
#b.publisher代表外键publisher
b.publisher.website
  • 反向查询
1、先查询Publisher某行数据对应的p
p = Publisher.objects.filter(id=1).first()
方法1:
#book_set的返回值为queryset对象,即查询结果
#模型Book的的外键字段publisher不能设置参数related_name
b = p.book_set.first()
b.title

方法2:
#由模型Book的外键字段publisher的参数related_name实现
#必须设置related_name参数才能实现
#将外键字段的related_name设置为publisher
b = p.publisher.first()
b.title
  • 在查询条件(filter,get)中使用正向反向查询
#name__name,前面的name是模型Book的字段name
#后面的name是模型Publisher的字段name,两者使用双下划线连接
>>> b = Book.objects.filter(publisher_id__id='1')
>>> b
<QuerySet [<Book: python>, <Book: linux>]>

标签:publisher,name,18,外键,django,数据表,Book,查询
From: https://www.cnblogs.com/xwltest/p/16749409.html

相关文章

  • 多容器部署django项目 上传图片出现 [Errno 13] Permission denied: ‘/var/www/mysit
    @目录问题原因解决办法一、进入容器添加权限二、在Dockerfile文件中添加上代码,重新生成镜像并启动容器问题原因首先,这是用docker多容器部署django项目的情况下发现的一个......
  • Django&Vue实战
    一、虚拟环境1.1安装虚拟环境#创建虚拟环境文件夹d:\>mkdirvirtualenvd:\>cdvirtualenvd:\virtualenv>pipinstallvirtualenv#虚拟环境-p指向python解释器,创......
  • 2022赛前模测 提高组验题- 18
    问题B:【2022NOIP联测210月2日】最短路问题V3我把我写的这个改了改格式去最短路的专题里都能A某些东西,比如:信使,对,这题的数据很水,但是我把它交到accoders上不是T了而是......
  • React18 (六) hook钩子函数
    React中的钩子函数的功能非常的强大,而它的使用又十分简单。关于钩子函数的使用,我们只需记住两点:1.钩子只能在React组件和自定义钩子中使用2.钩子不能在嵌套函数或其他......
  • 在笔记本上构建Win10,ubuntu 18双系统实录
    1.准备工作:两块移动硬盘(大小在8G以上):分别用于构建windows和Ubuntu的安装镜像笔记本电脑最好有两个硬盘:将系统分别安装到两个硬盘上可以避免一些由于windows安全......
  • 2022-2023-1 20221418 第五周学习总结
    学期2022-2023-1学号20221418《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程<班级的链接>2022-2023-1-计算机基础与程序设计这个作......
  • SWPUCTF2018SimplePHP-md
    title:SWPUCTF2018SimplePHP.mddate:2022-06-2508:06:23tags:登陆进去之后发现上传文件这里我们试着上传一个shell试试发现过滤了应该直接上传shell不可以这......
  • 代码随想录 四数相加II(LeetCode 454), 赎金信(LeetCode 383), 三数之和 (LeetCode 1
    四数相加II题目给定四个包含整数的数组列表A,B,C,D,计算有多少个元组(i,j,k,l),使得A[i]+B[j]+C[k]+D[l]=0。输入:A=[1,2]B=[-2,-1]C=......
  • 18 -- 排序算法之快速排序
         从中可以发现:每次以哪个数为基准,哪个数就能被放置在最终拍好顺序的正确位置,示意图中是以每组数中的最后一个数作为基准的,需要指出的是:基准的选择不是确定的......
  • P1848 [USACO12OPEN]Bookshelf G
    简要题意给你\(N\)本书\((h_i,w_i)\),你要将书分成任意段(顺序不能改变),使得每一段\(j\)中\(\sum\limits_{i\inj}w_i\leqL\),段\(j\)的代价为\(\max\limits_{i......