【笔记】Django的ORM之删和改
【笔记】Django的ORM之删和改
一 删除操作
1.视图层
<table border="1">
<thead>
<tr>
<th>序号</th>
<th>ID</th>
<th>出版社名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for publisher in publisher_list %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ publisher.id }}</td>
<td>{{ publisher.name }}</td>
<td><ahref="/delete_publisher/?id={{ publisher.id }}">删除</a></td>
<td><ahref="/edit_publisher/?id={{ publisher.id }}">编辑</a></td>
</tr>
{% endfor %}
</tbody>
</table>
2. 逻辑层
通过GET方法向服务端传送要删除数据的id;
def delete_publisher(request):
# 通过GET方法获取id
del_id = request.GET.get('id', None)
# 如果取到id,删除该数据并跳转到列表页,否则提示失败
if del_id:
# 通过id拿到药删除的数据对象
del_obj = models.Publisher.objects.get(id=del_id)
del_obj.delete()
return redirect('/publisher_list/')
else:
return HttpResponse('删除失败,该出版社不存在')
二 修改操作
1. 视图层
与上面一样
2. 逻辑层
def edit_publisher(request):
# 如果是POST请求,说明是要更新出版社名称
if request.method == 'POST':
# 获取要更新的id
edit_id = request.POST.get("id", None)
# 获取新的名字
new_name = request.POST.get("publisher_name")
# 通过id获得出版社对象
publisher_obj = models.Publisher.objects.get(id=edit_id)
# 赋值新名字
publisher_obj.name = new_name
# 提交到数据库中执行
publisher_obj.save()
return redirect('/publisher_list/')
edit_id = request.GET.get("id", None)
if edit_id:
publisher_obj = models.Publisher.objects.get(id=edit_id)
return render(request, 'edit_publisher.html', {"publisher":publisher_obj})
else:
return HttpResponse('编辑的出版社不存在!')
三 其他
1. 下拉框
<form action="/edit_book/" method="post">
<input type="text" style="display: none" name="id" value="{{ edit_obj.id }}">
<p>书名:
<input type="text" name="book_title" value="{{ edit_obj.title }}">
</p>
<p>出版社名称:
<select name="publisher">
{% for publisher in all_publisher %}
{% if edit_obj.publisher.id == publisher.id %}
<optionselectedvalue="{{ publisher.id }}">{{ publisher.name }}</option>
{% else %}
<optionvalue="{{ publisher.id }}">{{ publisher.name }}</option>
{% endif %}
{% endfor %}
</select>
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
2. 对已有数据的数据表添加字段

执行python3 manage.py makemigrations和python3 manage.py migrate时,可以通过以下方式找到一个执行窗口,更方便的执行。


【笔记】Django的ORM之删和改的更多相关文章
- python/Django(增、删、改、查)操作
python/Django(增.删.改.查)操作 我们要通过pycharm中的Django模块连接MySQL数据库进行对数据的操作. 一.创建Django项目(每创建一个项目都要进行以下设置) 1.如 ...
- 【笔记】Django的ORM之多对多表的增和删
[笔记]Django的ORM之多对多表的增和删 Django ORM 多对多 一 昨日补充:外键关联 外键在ORM中的关联方式: 与数据表相关的类都放到models.py文件中 class Book ...
- (17)模型层 -ORM之msql 单表的增、删、改、查 及其他操作
单表操作-增.删.改.查 ret=models.User.objects.filter(id=1) #这里的结果是一个queryset对象 ret=modles.User.Objects.filte ...
- Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例
前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也 ...
- django单表操作,增、删、改、查
一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据. 目的:通过classes(班 ...
- Dapper学习笔记(3)-增、删、改、查
一.建表 在数据库中建立如下三张表: CREATE TABLE [dbo].[T_User] ( , ) PRIMARY KEY NOT NULL, ) NOT NULL, ) NULL, ) NUL ...
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V: view (显示的视图) C: controller 控制器 入门案例: acit ...
- Java框架spring Boot学习笔记(五):Spring Boot操作MySQL数据库增、删、改、查
在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...
- Android(java)学习笔记129:对ListView等列表组件中数据进行增、删、改操作
1. ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V: view (显示的视图) C: controller 控制器 入门案例: aci ...
随机推荐
- 浅谈时钟的生成(js手写代码)(非原创)
在生成时钟的过程中自己想到布置表盘的写法由这么几种: 当然利用那种模式都可以实现,所以我们要用一个最好理解,代码有相对简便的方法实现 1.利用三角函数 用js在三角函数布置表盘的过程中有遇见到这种情况 ...
- 第5章 选举模式和ZooKeeper的集群安装 5-2 单机伪分布式安装zookeeper集群
先搭建伪分布式集群,再去搭建真分布式集群.有些的人的电脑内存.性能比较低,所以在搭建真实的一个分布式环境的话,可能会相对来说比较卡,所以两种都会做一下,首先会在单机上搭建一个集群.单机上的集群主要就是 ...
- 第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-1 zookeeper常用命令行操作
ls path [watch] watch是一个监督者.quota是zookeeper的子目录.目录就是节点的意思,对于zookeeper来说它是以一个节点来说的,所以说/就是根节点,zookeepe ...
- WINFORM 开发模式,窗体回到默认样式方法。
软件分为3类 客户端 网站应用 app WINFORM 主要用来只做客户端应用程序.C/S 客户端程序很重要的特点:可以操作用户电脑上的文件,执行在客户端上,电脑的配置越高执行就越流畅. 在p ...
- centos中JDK版本冲突的问题
在centos环境下,我JDK版本安装了jdk6,jdk7.系统还自带了一个JDK7. 我在查看JDK版本是,发现不是我在/etc/profile中配置的. 1:which java 查看Java的命 ...
- 抽象类(abstract)【转】
抽象类(abstract) abstract修饰符可以和类.方法.属性.索引器及事件一起使用.在类声明中使用abstract修饰符以指示某个类只能是其它类的基类.标记为抽象或包含在抽象类中的成员必须通 ...
- mysql在linux下的安装与优化
mysql5.6 http://www.cnblogs.com/bookwed/p/5896619.html mysql5.7 http://blog.csdn.net/wb96a1007/artic ...
- tomcat - 认识
tomcat - web应用服务器 环境:ubuntu测试 @shell命令(cd到tomcat目录下) 启动: ./bin startup.sh 关闭:./bin shutdown.sh @部署 ...
- 自定义非等高 Cell
1.自定义非等高 Cell介绍 1.1 代码自定义(frame) 新建一个继承自 UITableViewCell 的类. 重写 initWithStyle:reuseIdentifier: 方法. 添 ...
- DOS下修改IP地址
这两天不知道怎么回事,IPV4竟然无法修改,郁闷之极下,想到用命令行试试. 于是敲入下面的代码: >netsh <Enter> netsh>interface <Ente ...