首页 > 编程语言 >巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询

时间:2022-11-14 12:08:33浏览次数:50  
标签:基于 django8 下划线 删除 book 多表 写法 id

1.编辑删除&&多对多关系的其他方法

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据

提交,数据,得到结果

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_02

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_03

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_04

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_05

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_06

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_07

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_08

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_09

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_10

查看运行

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_11

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_12

给编辑和删除,添加样式

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_13

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_14

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_15

打印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表

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_16

级联删除就是通过这样的方式进行删除的,在这里默认就是级联删除的,记住这一点,在多对一的关系中(书和出版社)

 

编辑数据,在这里和添加数据只相差一句话(如下图所示:)

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_17

edit_book.html和add_book.html页面结果差不多,我们进行修改就可以了

在这里我们应该回复的是edit_book.html页面

获取第n个,是为了保存已经选取的数据

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_18

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_19

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_20

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_21

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_22

这样,我们就进行了成功的选择

 

怎样对多选的复选框进行,筛选?(下面的是筛选界面的一开始未修改的界面)

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_23

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_24

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_25

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_26

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_27

成功被选择中

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_28

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_29

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

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_30

 

一些补充:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_31

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_32

运行:

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_33

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_34

book_id对应的author_id已经修改成了2

现在我们再改回去

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_35

报错

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_36

实际情况的写法

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_37

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_38

这时候恢复了原样

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_39

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_40

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_41

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_42

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_43

清除id=6的对应关系

运行,

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_44

之前的数据

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_45

之后的数据:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_46

 

作业:

书籍管理

作者管理

出版社管理:

  用上模板继承,相关知识(利用模板继承来实现这个工作)

 

2.基于双下划线的跨表查询1

多对1的正向查询

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_47

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_48

 

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_49

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_50

 

查看表的对应关系

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_51

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_52

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

首先连接表

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_53

在连表的基础上进行筛选

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_54

 

 现在我们只需要publish的名字

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_55

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_56

 

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_57

第一种写法是基于对象的用的是get方法,

下边的第二种写法是基于双下划线filter方法,不能用get

 SQL里边叫字段,ORM写在python里边叫属性

整体代码:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_58

查找出版社和地址两者

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_59

 

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_60

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_61

结果:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_62

 

 对比三者的区别

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_63

结果如下所示:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_64

 正向一对一:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_65

结果:

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_66

 

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_67

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_68

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

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_69

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_70

 

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_71

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_72

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_73

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_74

 

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_75

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_76

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_77

作者的id是1

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_78

也就是"鲁智深"

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_79

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_80

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_81

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

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_82

这时候,作者多了1个武松

 

升级查询

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_83

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_84

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_85

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_下划线_86

第三条语句有问题!!!

 

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_87

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_数据_88

 

3.基于双下划线的跨表查询2

 通过表之间的er图查看关系

巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询_字段_89

 



标签:基于,django8,下划线,删除,book,多表,写法,id
From: https://blog.51cto.com/u_11182673/5848783

相关文章