4、删除表记录
删除方法就是 delete()。它运行时立即删除对象而不返回任何值。例如:
1
|
model_obj.delete() |
你也可以一次性删除多个对象。每个 QuerySet 都有一个 delete() 方法,它一次性删除 QuerySet 中所有的对象。
例如,下面的代码将删除 pub_date 是2018年的 Book 对象:
1
|
Book.objects. filter (pub_date__year = 2018 ).delete() |
在 Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 的行为,换句话说,删除一个对象时也会删除与它相关联的外键对象。例如:
1
2
3
|
b = Book.objects.get(pk = 1 ) # This will delete the Blog and all of its Entry objects. b.delete() |
要注意的是: delete() 方法是 QuerySet 上的方法,但并不适用于 Manager 本身。这是一种保护机制,是为了避免意外地调用 Entry.objects.delete() 方法导致 所有的 记录被误删除。如果你确认要删除所有的对象,那么你必须显式地调用:
1
|
Book.objects. all ().delete() |
5、修改表记录
方式一:
通过修改实例对象的属性方式。注意:一定要对象.save()
1
2
3
|
book = models.Book.objects.get(title = "吸星大法" ) book.price = 180 book.save() |
方式二:
通过ORM提供的objects提供的方法 update来实现。
1
|
models.Book.objects. filter (title = "吸星大法" ).update(price = 190 ) |
此外,update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录update()方法会返回一个整型数值,表示受影响的记录条数。
四、今日作业
1、ORM练习题:
数据:
models.Book.objects.create(title="独孤九剑", price=180, publisher="华山出版社", pub_date="2019-1-12") models.Book.objects.create(title="华山剑法", price=100, publisher="华山出版社", pub_date="2018-10-2") models.Book.objects.create(title="挤奶龙爪手", price=200, publisher="华山出版社", pub_date="2019-2-22") models.Book.objects.create(title="冲灵剑法", price=150, publisher="华山出版社", pub_date="2019-3-6") models.Book.objects.create(title="吸星大法", price=190, publisher="明教出版社", pub_date="2019-2-6") models.Book.objects.create(title="葵花宝典", price=280, publisher="明教出版社", pub_date="2018-1-17") models.Book.objects.create(title="乾坤大挪移", price=260, publisher="明教出版社", pub_date="2019-1-6") models.Book.objects.create(title="九阴真经", price=220, publisher="少林出版社", pub_date="2019-3-6") models.Book.objects.create(title="九阳神功", price=230, publisher="少林出版社", pub_date="2019-3-11") models.Book.objects.create(title="九阴白骨爪", price=50, publisher="少林出版社", pub_date="2019-2-7")
练习题:
1
2
3
4
5
6
7
8
9
|
1 查询明教出版社出版过的价格大于 200 的书籍 2 查询 2019 年 3 月出版的所有以“九”开头的书籍名称 3 查询价格为 50 , 100 或者 150 的所有书籍名称及其出版社名称 4 查询价格在 100 到 200 之间的所有书籍名称及其价格 5 查询所有华山出版社出版的书籍的价格(从高到低排序,去重) |
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数