目录
1 更新单个数据
大致的步骤是这样的
- 通过get查询数据,拿到要改的对象
- 通过 对象.属性 方式修改数据(创建数据的第二个方法)
- 通过 对象.save()保存数据
我们现在改一下 id为1 的书的 price为25(之前是20)
首先我们拿到这个书的对象
然后改
最后存
刷新页面后我们发现变为了25
2 批量更新数据
大致步骤是这样的
- 通过查询的方式,拿到多个数据的一个总对象(多个数据会返回Queryset类型)
- 通过 对象.update(属性=值) 更新数据
我们现在要将 id=4与id=5 的retail_price都变为100
首先我们获取对象
然后使用update
update会返回更改数据的个数
我们刷新一下页面,发现最后两行的retail_price都变为了100
3 制作更新链接
我们上一章将此处的更新链接设置为空,现在我们来做这个链接
首先加入一个路由
之后在book_list.html中给更新加上链接,在这里我们通过查询字符串的方式得到我们点击的链接的id
然后我们写上传的页面 upload.html,这里写input中value的目的是给一个默认值,后面的required规定input不能为空
最后我们写更新的视图,我们先看get,首先通过查询字符串拿到id,之后根据id进行查找book对象,最后给到update_book.html
下面我们再看post,首先从我们输入的内容中接到各属性的值,之后根据上面全局变量id进行查询,查完了改,改完了存,存完了做一个重定向返回 book/book_list 这个路由
使用起来是这样的,首先进到我们图书的展示页,然后点击更新
点击更新之后会转到更新页
我们现在将price改为50,然后点击更新
发现已经成功更新
我们再改一个,现在我们想把id为3的book_name改成另一个名字,我们在这里点击更新
发现同样可以成功修改
除了使用查询字符串还可以使用路由转换器传递id。视频中让前两行的input不可编辑,我们给input disable属性就可以了
视频P21中使用了路由转换器的方法,并且是使用form表单进入不同的路由进行更改 2021最新版Django全套视频(django框架快速上手)_Python全栈_哔哩哔哩_bilibili ,有兴趣可以看一下
路由转换器的方法就是这样的
还是通过链接进入该路由,进入后就把book_id传给视图了