当前位置: 首页 > 时尚 > >正文

零基础入手Django(七):模型基础2

来源:哔哩哔哩    时间:2023-05-03 18:18:27

今天,小叮当来为大家继续分享Django干货~

主要内容有:常用的查询、常用字段类型及常用参数、表关系的实现

一、常用的查询


(资料图片仅供参考)

常用的查询方法总结

由于其使用方法在零基础入手Django(六):模型基础1中已经为大家介绍过,这里只挑选出来几个具有代表性的进行演示。

(1)使用order_by逆向排序

重新定义查询视图函数

在浏览器中访问

在Pycharm后台端,查看输出结果

可以看到,默认查询是按id正序排列。使用order_by方法后,我们成功使得输出按照age进行了逆向排列。

值得注意,在按age倒序输出时,相同age的数据还是按id从小到大排列了,例如age=18时,先输出了id=1的xdd才输出了id=2的小叮当。

这时我们就可以使用order_by,对多个字段进行排序,使得当age相同时,便按id从大到小进行排序。

在视图函数中添加如下语句:

在浏览器中访问后,在后台查看

(2)values将输出结果字典化

重新定义查询视图函数

在浏览器中查看

在pycharm后台端查看输出结果

(3)count查询数据总数

在查询视图函数中,添加如下代码

在浏览器中查看

在pycharm后台端查看结果

2.常用的查询条件总结

定义查询视图函数

在浏览器中访问

在后台查看结果

其中值得注意的是,在django中使用条件查询时,相当于使用了sql语句中的where。其语法是:字段名__规则 (字段名和规则之间是两条下划线

例如:

就相当于sql语句

select * from .... where city is null

二、常用字段类型及常用参数

常用的字段类型映射关系

在models.py中我们可以看到,我们只使用了AutoField(自增长类型)、CharField(字符类型)、IntegerField(整数类型)等数据类型。

其实,在Django中还有其它几种常用的字段类型,它们的映射关系如下

常用的字段类型总结如下

Field的常用参数总结如下:

2.使用常用类型创建数据表

(1)我们在models.py中建Field_Test模型类作为一张新的表

(2)在pycharm的tools中找到"Run manage.py Task..."

执行makemigrations model_test

(3)执行migrate model_test

(4)使用xshell进行查看

执行命令“mysql -u xdd(用户名) -p(输入密码)”

执行命令“use mydb;"

执行命令”show tables;

执行命令”desc model_test_field_test;"

3.向表中插入数据

(1)重新定义添加数据的视图函数

(2)在浏览器中访问

(3)通过xshell进行查看

4.更新数据

(1)重新定义添加数据的视图函数

(2)在浏览器中访问

(3)通过xshell查看

可以看到,数据更新的时间已经自动更新。但是显示的更新的时间与我们真实的时间相差了8个小时~大家知道这是时区默认设置导致的即可。

值得注意,只有使用.save()方法更新数据,系统才会自动更新时间。而使用update方法更新,则不会调用auto_now自动更新时间。

三、表关系的实现

1.表关系示意图

2.示例

为了明确在django中如何创建丰富的表关系,小叮当为大家示例如下

(1)表关系图

假如有下面这几张表

它们的关系可以这样表示:

(2)在项目中新建app,并注册

在项目中新建名为db_test的app用来实现表关系。在Tools中打开Run manage.py Task...

执行命令“startapp db_test"

在项目处,右键将创建好的app下载下来

在项目的settings文件中注册创建好的app

(3)创建表

我们在建好的”db_test“的models.py中创建表。值得注意,当出现一对多,多对多,一对一等复杂关系时,我们一般先从”一“这一端来创建表。

在models.py中创建模型类如下:

在Pycharm的Tools中打开Run manage.py Task...

执行 makemigrations

执行 migrate

在xshell 的mysql中 执行 show tables;

执行desc db_test_department;查看学院信息表

执行 desc db_test_student; 查看学生信息表

可以看到,学生信息表中自动为我们关联生成了”department_id"外键,也就是department表的d_id

关于级联删除:

只有引用的数据全部删除后,才可以删除被引用表中的父类数据。例如,学院信息表中1代表计算机学院。在学生信息表中,小明、小红、小花都是计算机学院,他们的外键值都是1,想要在学院信息表中删除计算机学院,需要在学生信息表中先删除了引用计算机学院的小明、 小红、小花。

执行 desc db_test_course;查看课程表

执行 desc db_test_stu_detail; 查看学生详细信息表

可以看到,已经按照我们的设置,学生详细信息表和学生表建立了一对一的关系。

再次执行,show tables;

我们看到,我们已实现了学生表与课程表的多对多关系,系统已为我们自动生成了中间信息表“db_test_course_student"。

执行 desc db_test_course_student; 进行查看,结果如下

X 关闭

推荐内容

最近更新

Copyright ©  2015-2022 服装头条网版权所有  备案号:沪ICP备2022005074号-20   联系邮箱:58 55 97 3@qq.com