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#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...
随机推荐
- axios请求配置
全局配置示例(在js文件配置): axios.defaults.baseURL = 'https://api.example.com'; axios.defaults.headers.common[' ...
- webhook触发jenkins进行sonar检测
目的 jenkins仅需创建一个job,git推送后自动进行sonar代码检测并上传到sonarqube jenkins插件 已按社区推荐安装基本插件 Generic Webhook Trigger ...
- Solution -「UR #21」「UOJ #632」挑战最大团
\(\mathcal{Description}\) Link. 对于简单无向图 \(G=(V,E)\),定义它是"优美"的,当且仅当 \[\forall\{a,b,c,d\ ...
- JUC并发工具类之Semaphore控制并发线程数
首先看看关于Semaphore的UML图: 从上图看,信号量的实现原理与锁类似,是基于AQS的:有公平与非公平之分.当初始的资源数为1时就退化为排它锁了,资源总数即state的初始值,在acquire ...
- 树莓派GPIO开发(三):蜂鸣器-PWM调节
配置环境 系统:Raspbian11(官方64位) 设备:树莓派CM4 一.写在前面 关于PWM的基本介绍在上一篇博客已经说过了:树莓派GPIO开发(二)RGB模块-PWM调节 在RGB模块中,我们主 ...
- 关于oracle中(+)的运用
一.基础 1.1 SQL查询的基本原理 第一.单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的):然后根据SELECT的选择列选择相应的列进行返回最终结果.第二.两表 ...
- [LeetCode]1221. 分割平衡字符串
在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的. 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串. 返回可以通过分割得到的平衡字符串的最大数量. 示例 1: 输入:s = ...
- ensp上防火墙的实现
使用ensp模拟器中的防火墙(USG6000V)配置NAT(网页版)一.NAT介绍NAT(Network Address Translation,网络地址转换):简单来说就是将内部私有地址转换成公网地 ...
- Virtual Box 中的虚拟系统无法调整分辨率(无法自适应窗口大小)
关于 Virtual Box 中安装好虚拟机后无法调整分辨率,即无法随 vbox 窗口大小自动调整内部虚拟机的屏幕. 网上找了百度了一遍,很多方法并不凑效,好在最后解决了,现将过程记录,以飨来者. 1 ...
- 解决shell脚本错误$’r’ command not found
从windows上传了一个脚本到Linux上执行 出现如下错误:$'\r': command not found这是windows与Unix文本编辑的默认格式不同造成的,需要转成unix格式. 解决方 ...


