Django中ORM对数据库的增删改查
Django中ORM对数据库数据的增删改查
模板语言
{% for line in press %} {% line.name %} {% endfor %}
{% if 条件 %}{% else %}{% endif %}
{% if publisher == book.publisher %}
<option selected value="{{ publisher.id }}">{{ publisher.name }}</option>
{% else %}
<option value="{{ publisher.id }}">{{ publisher.name }}</option>
{% endif %}
什么是ORM
- ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查
Django中连接数据库和创建表(见上个笔记)
单表的增删改查
创建单表
增
UserInfo.object.create(name="lin")
UserInfo.object.create(**{"name":"lin"})
删
在HTTP中的URL中添加参数
UserInfo.object.filter(id=1).delete() #删除在UserInfo表中筛选出id为1的对象
在Django中获取URL中的参数
request.GET #获取一个类似于字典
request.GET.get("id") #取值
改对数据库进行修改时需要对数据进行保存
obj = UserInfo.objects.filter(id=3)[0]
obj.name = "alex" #这里改只是在Python中将数据进行更改
obj.save() #将数据库中的数据进行更改,
#第二种方法
UserInfo.objects.filter(id=3).update(name="alex") #直接设定对应属性,
查
UserInfo.objects.filter(email=email) #筛选出满足条件的对象,放在一个类似列表中,
UserInfo.objects.all() #查询所有的结果,放在一个类似列表中
UserInfo.objects.get(id=1) #查询筛选条件匹配的对象,有且只有一个,如果符合条件超过一个或者没有,就会报错
查到后通过点“.”取具体的值
一对多的增删改查
注意在Django2.0以上的版本,外键需要手动设置级联操作
publisher = models.ForeignKey(to='Publisher', on_delete=models.CASCADE) # ORM自动刚给外键字段加_id
关联表
增
需要注意参数(关联外键是,
Book.objects.create(title=new_title,publisher=Publisher.objects.get(id=publisher_id))
Book.objects.create(title=new_title, publisher_id=publisher_id)
删
Book.objects.get(id=id).delete()
改 注意改完需要保存
book_obj.name = "新的值" #book_obj为对象
book_obj.publisher_id = "新id"
book_obj.save()
查
多对多查询
关联表
- book = models.ManyTOManyField(to="Book_list")
相关代码
#author_obj是创建第三张关联表那个类的一个对象
author_obj.book.all() #查询作者关联的所有书籍
author_obj.book.add(id1,id2) #给作者添加关联的书籍 等同于
author_obj.book.add(*[id1,id2])
author_obj.book.set([id1,id2]) #类似为将以前的删掉,重新关联现在的书籍
对html错误的提示
Django中ORM对数据库的增删改查的更多相关文章
- Django中ORM对数据库的增删改查操作
前言 什么是ORM? ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作. 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象.在 ...
- Django中对单表的增删改查
之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.objects.creat ...
- java中如何操作数据库(增删改查)
EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满足条件的实体Bean.实体B ...
- 048:ORM模型基本的增删改查操作
ORM对数据库的增删改查基本操作: 创建模型如下: 基本的增删改查如下:
- django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面
1.为test.DB数据库预先创建下面数据 1 张三 16 2015-01-02 12 李四 17 2015-01-04 13 王五 14 ...
- Django基础学习四_数据库的增删改查
今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- Android中Sqlite数据库进行增删改查
今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...
- [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?
[译]聊聊C#中的泛型的使用(新手勿入) 写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...
随机推荐
- 配置docker的DNS
方式一:在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS: { "dns" : [ "114.114.114.114 ...
- Windows office2019免费激活,附代码
office2019地址:链接:https://pan.baidu.com/s/1zPt5U7b0L-bGHl5AOtYs2w提取码:m5ei 新建一个txt,然后把这段代码放进去,然后保存关闭改后缀 ...
- 震惊!!!!!!!靠sort水过二叉堆的天秀操作
- Vue.use初探
Vue.use 问题 相信很多人在用Vue使用别人的组件时,会用到 Vue.use(). 例如:Vue.use(VueRouter).Vue.use(MintUI). 但是用 axios时,就不需要用 ...
- JDK线程池
简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力,但频繁的创建线程的开销是很大的,那么如何来减少这部分的开销了,那么就要考虑使用线程 ...
- Error from server error dialing backend remote error tls internal error
# kubectl exec -it mysql-master-8cfb64ff9-ct4dx -n prophet -- /bin/bash Error from server: error dia ...
- JavaScript ==原理与分析
JavaScript原始类型 ECMAScript 有 5 种原始类型(primitive type),即 Undefined.Null.Boolean.Number 和 String. typeof ...
- MYSQL时代是否将结束
前言 已知MariaDB预计于今年下半年将以spac形式完成上市,最近也看了不少文章,发现MariaDB正在以一个迅猛的速度超越mysql,mysql 可以说是开源数据库中最具代表性的一个,甚至可以说 ...
- NSSCTF-easyupload3.0
打开环境,是一个上传的界面,点击下面的会回显出上传成功之后的路径,选择上传文件可以直接上传文件 尝试各种文件的上传(菜狗不知道怎么一下做出来,只好一个一个试),最后试出来的文件是.htaccess文件 ...
- IP网络性能测试工具——Renix Perf
一.Renix Perf 基于软件的网络及应用服务性能测试工具 · 双臂测试 · 单臂测试 通过测试端点产生网络流量对网络性能进行测量 · TCP.UDP.PING · 语音.视频.HTTP.FTP. ...