Django04-1: ORM增删改查
ORM 增删改查
一、字段增加
#终端输入
1.model里添加字段,
2.执行迁移命令。
3.终端里输入默认值,继续执行迁移命令。
#允许为空
再null=true,终端不需要输入默认值
#设置默认值
defalult=‘xxxx‘
二、字段修改
1.直接修改代码,
2,执行迁移两条命令。
三、字段删
1.对应字段注释;
2.执行迁移两条命令;
警告:执行完毕字段对应数据删除,不要轻易操作
a.迁移命令执行前,注意查看修改代码。
b.离开计算机锁屏。
数据增删改查
1.查数据
a. code
res=models.User.objects.filter(username=username)
#<querySet[<User:User object>] >类型
#可以索引,切片操作,不能负数。
#不推荐索引,推荐first()user_obj=models.User.objects.filter(username=username).first()
pw=user_obj.password#filter(username=username,password=password)
#关系是and。相当于where#------------全部查找-------------
#方法一
data=models.user.objects.filter()#方式二
models.user.objects.all()
b. html 展示
补全,for+tag
<table class="table table-bordered"><thead><tr><th>#</th><th>id</th><th>书名</th><th>出版社名称</th><th>操作</th></tr></thead><tbody>{% for i in all_book %}<tr><td>{{ forloop.counter }}</td><td>{{ i.id }}</td><td>{{ i.title }}</td><td>{{ i.publisher.name }}</td><td><a class="btn btn-danger" href="/delete_book/?id={{ i.id }}">删除</a><a class="btn btn-info" href="/edit_book/?id={{ i.id }}">编辑</a></td></tr>{% endfor %}</tbody>
</table>
2.增数据
#第一种方法
res=models.User.objects.creat(username=username,password=passoword)
#返回值,当前被创建本身。#第二种方法
user_obj=models.User(username=username,password=password)
User_obj.save() #保存数据
3.编辑数据
将编辑按钮所在一行的主键值发送后端
利用?后面携带参数形式
href="/edit_book/?id={{ i.id }}"
# 取到编辑的书的id值edit_id = request.GET.get("id")# 根据id去数据库中把具体的书籍对象拿到edit_book_obj = models.Book.objects.get(id=edit_id)
#get 请求id 网址带?形式
edit_id = request.GET.get("id")if request.method == "POST":# 从提交的数据里面取,书名和书关联的出版社#内置idedit_id = request.POST.get("id")new_title = request.POST.get("book_title")new_publisher_id = request.POST.get("publisher")#更新 方法一 批量更新models.Book.objects.filter(id=edit_id).update(book_title=new_title ,publisher=new_publisher_id )#只修改更新的# 更新 方法二 单独更新。重新赋值,并保存edit_book_obj = models.Book.objects.get(id=edit_id)edit_book_obj.title = new_title # 更新书名edit_book_obj.publisher_id = new_publisher_id # 更新书籍关联的出版社# 将修改提交到数据库edit_book_obj.save()# 缺点是,如果字段多,更新效率低# 重新把字段写一遍,无论修改或不修改# 返回书籍列表页面,查看是否编辑成功return redirect("/book_list/")
4.删除数据
与编辑功能逻辑相似。
delete_id = request.GET.get("id") # 从URL里面取数据#批量删除
models.Book.objects.filter(id=delete_id).delete()
ps:
a. 删除功能需要二次确定。
b. 内部不是真正删除。内部有个删除字段,仅仅修改状态。查看不显示。
Django04-1: ORM增删改查相关推荐
- Django框架(三)—— orm增删改查、Django生命周期
orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 ...
- Django框架(三)-- orm增删改查、Django生命周期
一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...
- day 67 django 之ORM 增删改查基础
一 操作基础前提准备 1. 新建django 项目 mysite 子项目app01 ,选择好做路径. 2 .2-1在app01 下面models 中引用 模块 from django.db im ...
- DjangoORM增删改查
1.ORM增删改查 CRUD增删改查 C:Create增加 R:read.Retrieve读取 U:update更新 D:delete删除 djando自带的Sqlite3数据库配置文件在settin ...
- 梅科尔工作室苏慎臻,Django使用ORM增删改
一.Django连接mysql数据库 默认情况下,Django连接的是自己带的sqlite数据库 先修改setting文件中的默认数据库信息 DATABASES = {'default': {'ENG ...
- python增删改查的框架_python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查...
Django中的ORM简介 ORM概念:对象关系映射(Object Relational Mapping,简称ORM): 用面向对象的方式描述数据库,去操作数据库,甚至可以达到不用编写SQL语句就能够 ...
- Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)
阅读目录 摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作 ...
- Django从理论到实战(part27)--ORM模型的增删改查操作
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- ORM框架之Mybatis(一)基于mapper配置增删改查
Mybatis是现在非常流行的SSM框架中的M部分,Mybatis也是一个主流的ORM框架,在项目中用来处理持久层数据. 一.Mybatis框架介绍及使用 1.1 mybatis框架概述: mybat ...
最新文章
- 分享一款jquery的日期插件
- 网站后端_Flask-第三方库.利用Flask-Socketio扩展构建实时流应用?
- git http仓库账号密码缓存至本地:不用每次git push都需要输入密码的方法(类似于windows的凭据管理)
- 【Nginx】判断URL中是否存在某个参数Parameter
- 武汉工程大学计算机学院研究生难吗,武汉工程大学考研难吗?一般要什么水平才可以进入?...
- C++ static_cast dynamic_cast const_cast reinterpret_cast使用总结
- 关于图片轮换与Tab标签
- SpringBoot异常处理以及对数据正确性的检查
- Activemq判断队列存活脚本(一)
- 百度地图离线_3大主流导航地图,你用的哪个?
- linux下adb工具的安装目录下,adb工具包如何安装?怎么用?
- Matlab GUI设计——文件读取和保存uigetfile,uiputfile
- 挖金矿问题(c++求解)
- python模拟访问js_百度统计原理分析-利用PHP/Python实现模拟访问
- 5星|戴蒙德《为什么有的国家富裕,有的国家贫穷》:为什么有的国家能发展出好制度...
- 耀世升级,第三版Java多线程核心技术手册,成长之路必不可少
- 如何在文字识别软件ABBYY中创建区域模板,处理大量相同内容?
- 【系统设计】系统设计基础:速率限制器
- PCI相关(2)- PCI桥与配置
- 「HTML+CSS」--自定义加载动画【027】