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:基于对象和基于双下划线的多表查询的更多相关文章

  1. 巨蟒python全栈开发数据库攻略3:行记录的操作&单表查询3

    1.数据行的增删改 2.单表查询 select&where条件 3.group by&having&order by&limit

  2. python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  3. (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  4. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  5. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  6. Django day08 多表操作 (三) 基于对象的跨表查询 基于双下划线的多表查询

    一: 基于对象的跨表查询 1. 一对一 正向: 反向: 2. 一对多 正向: 反向: 3.多对多 正向: 反向: 4.*****基于对象的多表查询 二: 基于双下划线的多表查询 1. 连表查询 一对一 ...

  7. Django框架(九)-- 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询

    一.创建多表模型 一对一:OneToOneField 一对多:ForeignKey 多对多:ManyToManyField 创建表时,会自动添加一个nid字段,并且自增,所以id可以不用手动创建 On ...

  8. Django框架(十)—— 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询、聚合查询、分组查询、F查询与Q查询

    目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对 ...

  9. Django学习——图书相关表关系建立、基于双下划线的跨表查询、聚合查询、分组查询、F查询、Q查询、admin的使用、使用脚本调用Django、Django查看源生sql

    0 图书相关表关系建立 1.5个表 2.书籍表,作者表,作者详情表(垂直分表),出版社表,书籍和作者表(多对多关系) 一对一 多对多 本质都是一对多 外键关系 3.一对一的关系,关联字段可以写在任意一 ...

随机推荐

  1. 利用Perlin nosie 完毕(PS 滤镜—— 分成云彩)

    %%%% Cloud %%%% 利用perlin noise生成云彩 clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image ...

  2. Centos6.8 下 Node.js 的安装

    思路:采用编译好的文件进行安装 一 使用 wget 下载 到 Node.js 官网(https://nodejs.org/en/download/) 选择要下载的编译版本(Source Code) / ...

  3. Spring事务的传播行为 @Transactional

    Spring事务的传播行为http://blog.csdn.net/cuker919/article/details/5957209 在service类前加上@Transactional,声明这个se ...

  4. asp.net web系统开发浏览器和前端工具

    1. Firefox浏览器+firebug插件 下载安装Firefox浏览器后,在菜单-附加组件-扩展中,搜索firebug,下载长得像甲虫一样的安装. 在web调试中,直接点击右上角的虫子,即可调出 ...

  5. Spring核心项目及微服务架构方向

    spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作 ...

  6. jquery treegrid实例

    前台jqurey代码 function organDatagrid(){ $organ_treegrid = $('#organ_treegrid').treegrid({ url:ctx+'/pet ...

  7. Mac OS X 控制键符号

  8. websocket echo test

    http://www.websocket.org/echo.html .net websocket server http://superwebsocket.codeplex.com/ http:// ...

  9. [: ==: unary operator expected 解决方法

    之前在写脚本时遇到了这样的错误 “[: ==: unary operator expected” 这是由于做判断的变量值为空导致的. 谷歌出解决方案: 在变量之后加任意字符.例如,要判断变量un是否为 ...

  10. ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例

    这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...