栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django讲课笔记10:使用QuerySet删除和查询单表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django讲课笔记10:使用QuerySet删除和查询单表

文章目录
  • 零、本讲学习目标
  • 一、课程导入
  • 二、新课讲授
    • (一)删除数据
      • 1、删除全部数据:all()与delete()
      • 2、删除一行数据:get()与delete()
      • 3、删除多行数据:filter()与delete()
      • 4、删除有外键的数据:delete()
        • (1)准备模型和表
        • (2)为index_personinfo准备测试数据
        • (3)为index_vocation准备测试数据
        • (4)级联删除id=1的李红利
  • 三、课堂小结
  • 四、课后作业
  • 五、拓展内容

零、本讲学习目标
  1. 掌握常用的删除记录的方式
  2. 掌握常用的查询数据的方式
  3. 掌握分组、排序、并、差、交操作
  4. 掌握多表查询
  5. 掌握原生SQL的3种查询方式
一、课程导入
  1. Shell下新增数据的7种方式
  2. Shell下更新数据的6种方式
二、新课讲授 (一)删除数据

删除数据有3种方式:删除数据表的全部数据、删除一行数据和删除多行数据.

1、删除全部数据:all()与delete()
  • 查看commodity_types表(14条记录)
  • 在终端Shell模式下执行命令:Types.objects.all().delete(),删除全部记录
  • 查看commodity_types表
2、删除一行数据:get()与delete()
  • 导入数据到表:python manage.py loaddata commodity_types_data.json
  • 查看commodity_types表
  • 在终端Shell模式下执行命令:Types.objects.get(id=2).delete(),删除id为2的记录
  • 查看commodity_types表
3、删除多行数据:filter()与delete()
  • 在终端Shell模式下执行命令:Types.objects.filter(firsts='儿童用品').delete(),删除全部“儿童用品”
  • 删除了4条记录,查看commodity_types表
4、删除有外键的数据:delete()

删除数据的过程中,如果删除的数据设有外键字段,就会同时删除外键关联的数据。

(1)准备模型和表
  • 在index模块的models.py中定义以下2个模型类

    第22行定义了name为外键,关联的是PeronInfo对象,而且是级联删除。从模型 Vocation 得知,外键字段的参数 on_delete 用于设置数据删除模式,比如模型 Vocation的外键字段name设为CASCADE模式,不同的删除模式会影响数据删除结果,说明如下:
    – PROTECT 模式:如果删除的数据设有外键字段并且关联其他数据表的数据,就提示数据删除失败。
    – SET_NULL模式:执行数据删除并把其他数据表的外键字段设为Null,外键字段必须将属性 Null 设为 True,否则提示异常。
    – SET_DEFAULT 模式:执行数据删除并把其他数据表的外键字段设为默认值。
    – SET 模式:执行数据删除并把其他数据表的外键字段关联其他数据。
    – DO_NOTHING 模式,不做任何处理,删除结果由数据库的删除模式决定。

  • 在终端执行数据迁移命令:python manage.py makemigrations

  • 在终端执行数据迁移命令,生成相应的数据表

  • 查看生成的两种表

(2)为index_personinfo准备测试数据

  • 查看index_personinfo表
(3)为index_vocation准备测试数据

  • 查看index_vocation表
(4)级联删除id=1的李红利
  • 执行命令:PersonInfo.objects.get(id=1).delete()
  • 删除成功,总共删除了2条数据,1条是index_personinfo表的记录,1条是index_vocation表的记录。
  • 查看index_personinfo表,“李红利”记录已被删除
  • 查看index_vocation表,级联的记录(外键name_id=1)已被删除
三、课堂小结 四、课后作业 五、拓展内容
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号