【笔记】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 ...
随机推荐
- DAY14-前端之Bootstrap框架
Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局,并且 ...
- sqlplus--spool命令参数详解
sqlplus--SPOOL参数详解 Spool是Oracle快速导出数据的工具,是sqlplus的指令,不是sql语法里的东西 一.Spool常用的设置set arraysize 5000; // ...
- android手机分辨率的一些说明
Android上常见度量单位 px(像素):屏幕上的点,绝对长度,与硬件相关 in(英寸):长度单位 mm(毫米):长度单位 pt(磅):1/72英寸,point dp(与密度无关的像素):一种基于屏 ...
- UIScrollView现实循环滚动
#import "RootViewController.h" #define width [UIScreen mainScreen].bounds.size.width #defi ...
- PCL—点云分割(基于凹凸性) 低层次点云处理
博客转载自:http://www.cnblogs.com/ironstark/p/5027269.html 1.图像分割的两条思路 场景分割时机器视觉中的重要任务,尤其对家庭机器人而言,优秀的场景分割 ...
- Git 之 初使用
什么是Git? Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...
- Linux下boost编译安装
说明:下面内容仅针对Linux环境(boost官网为:http://www.boost.org/,可从这里下载它的源代码包,这里要求下载.tar.gz包,而非.7z..zip或bz2包). 在当前目录 ...
- win7搭建TensorFlow环境
官网安装指南地址:https://www.tensorflow.org/install/pip 安装过程碰到的问题: 1.创建虚拟环境 virtualenv --system-site-package ...
- oracle安装和使用问题解决方案
1.Enter the full pathname for java.exe 要输入的是32位系统的jdk中的java.exe路径,比如 C:\Program Files\Java\jdk1.6.0 ...
- CENTOS 7 升级安装 Python 3.5
写在前面的话 本文采取源码的方式安装 Python 3.5.2,如果是其它版本会有或多或少的差异,且写这篇的时候官网最新的是 Python 3.7,个人使用 3.5 就足够了,没必要更新到最新,否则出 ...