【笔记】Django的ORM之删和改

Django ORM 数据库 

一 删除操作

1.视图层

  1. <table border="1">
  2. <thead>
  3. <tr>
  4. <th>序号</th>
  5. <th>ID</th>
  6. <th>出版社名称</th>
  7. <th>操作</th>
  8. </tr>
  9. </thead>
  10. <tbody>
  11. {% for publisher in publisher_list %}
  12. <tr>
  13. <td>{{ forloop.counter }}</td>
  14. <td>{{ publisher.id }}</td>
  15. <td>{{ publisher.name }}</td>
  16. <td><ahref="/delete_publisher/?id={{ publisher.id }}">删除</a></td>
  17. <td><ahref="/edit_publisher/?id={{ publisher.id }}">编辑</a></td>
  18. </tr>
  19. {% endfor %}
  20. </tbody>
  21. </table>

2. 逻辑层

通过GET方法向服务端传送要删除数据的id;

  1. def delete_publisher(request):
  2. # 通过GET方法获取id
  3. del_id = request.GET.get('id', None)
  4. # 如果取到id,删除该数据并跳转到列表页,否则提示失败
  5. if del_id:
  6. # 通过id拿到药删除的数据对象
  7. del_obj = models.Publisher.objects.get(id=del_id)
  8. del_obj.delete()
  9. return redirect('/publisher_list/')
  10. else:
  11. return HttpResponse('删除失败,该出版社不存在')

二 修改操作

1. 视图层

与上面一样

2. 逻辑层

  1. def edit_publisher(request):
  2. # 如果是POST请求,说明是要更新出版社名称
  3. if request.method == 'POST':
  4. # 获取要更新的id
  5. edit_id = request.POST.get("id", None)
  6. # 获取新的名字
  7. new_name = request.POST.get("publisher_name")
  8. # 通过id获得出版社对象
  9. publisher_obj = models.Publisher.objects.get(id=edit_id)
  10. # 赋值新名字
  11. publisher_obj.name = new_name
  12. # 提交到数据库中执行
  13. publisher_obj.save()
  14. return redirect('/publisher_list/')
  15. edit_id = request.GET.get("id", None)
  16. if edit_id:
  17. publisher_obj = models.Publisher.objects.get(id=edit_id)
  18. return render(request, 'edit_publisher.html', {"publisher":publisher_obj})
  19. else:
  20. return HttpResponse('编辑的出版社不存在!')

三 其他

1. 下拉框

  1. <form action="/edit_book/" method="post">
  2. <input type="text" style="display: none" name="id" value="{{ edit_obj.id }}">
  3. <p>书名:
  4. <input type="text" name="book_title" value="{{ edit_obj.title }}">
  5. </p>
  6. <p>出版社名称:
  7. <select name="publisher">
  8. {% for publisher in all_publisher %}
  9. {% if edit_obj.publisher.id == publisher.id %}
  10. <optionselectedvalue="{{ publisher.id }}">{{ publisher.name }}</option>
  11. {% else %}
  12. <optionvalue="{{ publisher.id }}">{{ publisher.name }}</option>
  13. {% endif %}
  14. {% endfor %}
  15. </select>
  16. </p>
  17. <p>
  18. <input type="submit" value="提交">
  19. </p>
  20. </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. JAVA基础知识总结8(设计模式)

    设计模式:JAVA中有23种设计模式 1.解决问题最行之有效的思想. 2.是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 3.使用设计模式是为了可重用代码.让代码更容易被他人理解 ...

  2. go语言linux环境配置

    linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ...

  3. Cocos2d-x 网络编程

    主要介绍内容:Http协议,Socket协议,webSocket协议, Cocos2d-x中的相关类和方法 1 Http协议 HTTP协议也叫超文本传输协议.是互联网广泛使用的通信协议,常用于B/S架 ...

  4. iOS 聊天界面

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  5. 异常日志记录 DDLog

    项目中如果想把异常捕获再写入文件,有个十分容易使用的库DDLog. 首先导入库,在git上下载. 一:在项目初始化指定全局LogLeve ,一般在xxxapp.m中 staticconstint dd ...

  6. rpush()

    批量插入多个value,并为消息队列模式 $pipe->rpush($key,$vlaues);//$values是多个value组成的一个数组

  7. Unknown storage engine 'InnoDB'

    报错情况:在导入数据时候发现找不到InnoDB这个错误,之前查看博客时候明白了IsAsm数据库和InnoDB这两个的区别了. 解决方案: 尝试一:将my.ini配置文件的isasm改成InnoDB.这 ...

  8. jmeter MD5加密

    MD5.jar已经上传到博客园的文件中 第一步  添加变量${Qpassword} 第二步 调用MD5加密 import hehe.Str2MD5;String res = new Str2MD5() ...

  9. xml知识点

    XML 被设计用来传输和存储数据. HTML 被设计用来显示数据.应该掌握的基础知识:在您继续学习之前,需要对以下知识有基本的了解: HTML / XHTML JavaScript 如果您希望首先学习 ...

  10. 用Pdg2.DLL解码PDG的境界

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2008.08.03 一.入门级原理:按照<用BCB实现超星格式转换为BMP格式>中说的方法调用Pdg2.DLL接 ...