巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询
1.编辑删除&&多对多关系的其他方法

提交,数据,得到结果









查看运行


给编辑和删除,添加样式

我们点击删除,可以成功删除


打印sql语句的,在settings.py里边的配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level':'DEBUG',
},
}
}
删除表,先删除,第三张表,再删除book表

级联删除就是通过这样的方式进行删除的,在这里默认就是级联删除的,记住这一点,在多对一的关系中(书和出版社)
编辑数据,在这里和添加数据只相差一句话(如下图所示:)

edit_book.html和add_book.html页面结果差不多,我们进行修改就可以了
在这里我们应该回复的是edit_book.html页面
获取第n个,是为了保存已经选取的数据

在这里的编辑页面需要,指定默认的书名

需要添加一个表示用户选中的选项,



这样,我们就进行了成功的选择
怎样对多选的复选框进行,筛选?(下面的是筛选界面的一开始未修改的界面)



点击运行,编辑一下"笑傲江湖"


成功被选择中
调试,里边也是被选中的:


注意图上的很多文字描述也是很重要的概述

一些补充:


运行:


book_id对应的author_id已经修改成了2
现在我们再改回去

报错

实际情况的写法


这时候恢复了原样

注意,这个author表,,只能写1/2/5



这时候只剩下5和5的对应关系

清除id=6的对应关系
运行,

之前的数据

之后的数据:

作业:
书籍管理
作者管理
出版社管理:
用上模板继承,相关知识(利用模板继承来实现这个工作)
2.基于双下划线的跨表查询1
多对1的正向查询




查看表的对应关系


双下滑先记住一句话,正向按字段,反向按表名
首先连接表

在连表的基础上进行筛选

现在我们只需要publish的名字

基于双下划线,正向按字段的写法

运行,得到结果,注意这种写法,拿到的是queryset类型的数据

第一种写法是基于对象的用的是get方法,
下边的第二种写法是基于双下划线filter方法,不能用get
SQL里边叫字段,ORM写在python里边叫属性
整体代码:

查找出版社和地址两者


联表说明,谁在左,谁在右无所谓,这就说明有很多中写法

结果:

对比三者的区别

结果如下所示:

正向一对一:

结果:



结果的键,是按照values里边的筛选项作为键





大英帝国是没有作者的,所以什么都没有显示


go语言圣经的作者是"鲁智深"


作者的id是1

也就是"鲁智深"


在对应关系表中,再添加一个对应作者2"武松",查看结果

依然是这几条语句,查看作者

这时候,作者多了1个武松
升级查询




第三条语句有问题!!!


3.基于双下划线的跨表查询2
通过表之间的er图查看关系

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询的更多相关文章
- 巨蟒python全栈开发数据库攻略3:行记录的操作&单表查询3
1.数据行的增删改 2.单表查询 select&where条件 3.group by&having&order by&limit
- python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...
- (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...
- {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...
- Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询
Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...
- Django day08 多表操作 (三) 基于对象的跨表查询 基于双下划线的多表查询
一: 基于对象的跨表查询 1. 一对一 正向: 反向: 2. 一对多 正向: 反向: 3.多对多 正向: 反向: 4.*****基于对象的多表查询 二: 基于双下划线的多表查询 1. 连表查询 一对一 ...
- Django框架(九)-- 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询
一.创建多表模型 一对一:OneToOneField 一对多:ForeignKey 多对多:ManyToManyField 创建表时,会自动添加一个nid字段,并且自增,所以id可以不用手动创建 On ...
- Django框架(十)—— 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询
目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对 ...
- Django学习——图书相关表关系建立、基于双下划线的跨表查询、聚合查询、分组查询、F查询、Q查询、admin的使用、使用脚本调用Django、Django查看源生sql
0 图书相关表关系建立 1.5个表 2.书籍表,作者表,作者详情表(垂直分表),出版社表,书籍和作者表(多对多关系) 一对一 多对多 本质都是一对多 外键关系 3.一对一的关系,关联字段可以写在任意一 ...
随机推荐
- [Liferay] Liferay 实现单点登录 - OpenLDAP
Liferay 的单点登录绝对是个难啃的骨头,更何况网上能搜到的基本都是些滥竽充数的文章,很不负责任. 于是在自己搭通单点登录一条线之后,决定整理下思路并写出来,希望各位能别重蹈覆辙. 本文不介绍概念 ...
- 《windows核心编程》- 线程栈
当系统创建线程的时候,会为线程栈预订一块地址空间区域,并给该区域调拨一些物理存储器.默认会预订1MB的地址空间并调拨两个页面的存储器.但是在构建 应用程序的时候可以改变这个默认值 在构建应用程序的时候 ...
- 借鉴炉石传说的战棋游戏《DarkWar》
<炉石传说>是现在很火的休闲对战游戏,本人也非常喜欢玩,玩的时候经常想能不能把炉石的这些元素融入到战棋类游戏中,于是思索良久,又恰逢游戏蛮牛开展第三届蛮牛杯游戏开发大赛,于是用Unity3 ...
- Windows外壳名字空间的浏览
Windows95/98对Dos/Win3.x作了许多重大改进,在文件系统方面,它除了采用长文件名替代Dos中的8.3文件名以外,引入外壳名字空间(Shell Name Space)来代Dos文件系统 ...
- Linux如何关机与关机命令祥解
Linux关机命令祥解 1.直接关电源 2.init 0 3.telinit 0 4.shutdown -h now 5.halt6.poweroff 1.shutdown shutdown命令安全地 ...
- Java配置文件读取和路径设置
记录几种读取配置文件的方法,以及配置文件的放置路径. 1.使用PropertiesLoaderUtils工具类(springframework包提供) 优点:实时加载配置文件,修改后立即生效,不必重启 ...
- 李洪强iOS开发之OC语言前期准备
OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应 ...
- java - day10 - TetrominoTesting
图形试验,主要 向上造型 package com.example; /** * Created by Administrator on 17-5-23. */ public class Tetromi ...
- PyCharm创建文件时自动添加头注释
进入设置 File->settings->Editor->File and Code Templates->Python Script 添加以下代码: #!/usr/bin/e ...
- Vue 组件5 高级异步组件
自2.3.0起,异步组件的工厂函数也可以返回一个如下的对象. const AsyncComp = () => ({ // 需要加载的组件. 应当是一个 Promise component: im ...