【笔记】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 makemigrationspython3 manage.py migrate时,可以通过以下方式找到一个执行窗口,更方便的执行。

manage.py执行窗口

【笔记】Django的ORM之删和改的更多相关文章

  1. python/Django(增、删、改、查)操作

    python/Django(增.删.改.查)操作 我们要通过pycharm中的Django模块连接MySQL数据库进行对数据的操作. 一.创建Django项目(每创建一个项目都要进行以下设置) 1.如 ...

  2. 【笔记】Django的ORM之多对多表的增和删

    [笔记]Django的ORM之多对多表的增和删 Django ORM 多对多  一 昨日补充:外键关联 外键在ORM中的关联方式: 与数据表相关的类都放到models.py文件中 class Book ...

  3. (17)模型层 -ORM之msql 单表的增、删、改、查 及其他操作

    单表操作-增.删.改.查 ret=models.User.objects.filter(id=1)  #这里的结果是一个queryset对象 ret=modles.User.Objects.filte ...

  4. Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例

    前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也 ...

  5. django单表操作,增、删、改、查

    一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据. 目的:通过classes(班 ...

  6. Dapper学习笔记(3)-增、删、改、查

    一.建表 在数据库中建立如下三张表: CREATE TABLE [dbo].[T_User] ( , ) PRIMARY KEY NOT NULL, ) NOT NULL, ) NULL, ) NUL ...

  7. Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作

    1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: acit ...

  8. Java框架spring Boot学习笔记(五):Spring Boot操作MySQL数据库增、删、改、查

    在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...

  9. Android(java)学习笔记129:对ListView等列表组件中数据进行增、删、改操作

    1. ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: aci ...

随机推荐

  1. linux 信号量之SIGNAL 0<转>

    我们可以使用kill -l查看所有的信号量解释,但是没有看到SIGNAL 0的解释. [root@testdb~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) ...

  2. DAY5-模块与包

    一.模块的介绍 1.什么是模块 #常见的场景:一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spam使用. #在python中,模块的使 ...

  3. java 截取替换掉括号 包括括号中的内容

    public static void main(String[] args) { String company = "华厦世纪(厦门)地产"; // System.out.prin ...

  4. 【262】pscp命令 实现windows与linux互传文件

    首先将pscp.exe文件放在某个文件夹中 新建*.bat文件 w-wx.bat代码 @echo off pscp.exe -pw l*****h D:\Windows-Linux\Data\* oc ...

  5. 关联查询 join的使用

    #!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...

  6. 利用rowid删除数据库中无主键的相同记录

    数据库中表没有添加主键,误插入了两条数据,现在需要删除其中一条记录. 利用rowid号,因为表中的每一行数据都有一个rowid,这个rowid 号是不同的,用select可以查询出来. select ...

  7. [Elasticsearch2.x] 多字段搜索 (二) - 最佳字段查询及其调优 <译>

    最佳字段(Best Fields) 假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样: PUT /my_index/my_type/ { "title": "Q ...

  8. TaikrSpaceShooterStartKit.unitypackage包下载地址

    有好多教程里面没有资源包,现在加密分享给大家 unity4.*  链接: https://pan.baidu.com/s/1XMo2zVpV3ZhkNZKOb6H0yw 密码: tqnt unity5 ...

  9. Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识

    网站站点的背景调研 1. 检查 robots.txt 网站都会定义robots.txt 文件,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制.当然了,这个限制仅仅只是一个建议,你可以遵守,也 ...

  10. 说说excel

    今天遇到一个实际问题. 我有一组数据: 0.0.0.1 activate.adobe.com 0.0.0.1 practivate.adobe.com 0.0.0.1 ereg.adobe.com 0 ...