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对数据库的增删改查的更多相关文章

  1. Django中ORM对数据库的增删改查操作

         前言 什么是ORM?  ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作. 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象.在 ...

  2. Django中对单表的增删改查

    之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象   book_obj=Book.objects.creat ...

  3. java中如何操作数据库(增删改查)

    EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满足条件的实体Bean.实体B ...

  4. 048:ORM模型基本的增删改查操作

    ORM对数据库的增删改查基本操作: 创建模型如下: 基本的增删改查如下:

  5. django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

    1.为test.DB数据库预先创建下面数据 1    张三    16    2015-01-02    12    李四    17    2015-01-04    13    王五    14  ...

  6. Django基础学习四_数据库的增删改查

    今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...

  7. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  8. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  9. [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?

    [译]聊聊C#中的泛型的使用(新手勿入)   写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...

随机推荐

  1. MySQL基本命令语法之select

    目录 MySQL基本命令语法之select 查询去重以及常数 空值与着重号 着重号 空值 运算符 算术运算符 比较运算符 符号型 非符号型 逻辑运算符 优先级 排序分页 排序 分页 拓展 多表查询 等 ...

  2. Solution -「CF 855G」Harry Vs Voldemort

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个点的树和 \(q\) 次加边操作.求出每次操作后,满足 \(u,v,w\) 互不相等,路径 \((u,w ...

  3. verification 时间不推进,挂起

    时间不推进,挂起 0时刻 windows-> new -> source Browser 可能是仿真精度不够,比如进度是1ns,但是时钟有0.1ns为周期的,这种情况下,仿真器会吧这个周期 ...

  4. spring中容器和对象的创建流程

    容器和对象的创建流程 1.先创建容器 2.加载配置文件,封装成BeanDefinition 3.调用执行BeanFactoryPostProcessor 准备工作: 准备BeanPostProcess ...

  5. 使用 Spring Cloud Jaeger 进行分布式跟踪

    在本文中,学习如何实现 Jaeger(基于 OpenTracing 和 Spring Boot 应用程序)以及如何使用 Jaeger UI 可视化跟踪. 介绍 在本文中,我们将探讨如何使用 Jaege ...

  6. 乘风破浪,遇见未来元宇宙(Metaverse)之进入元宇宙世界,虚拟数字人行业洞察报告

    正值元宇宙热潮,虚拟数字人兴起 作为⼀个新兴领域,虚拟数字⼈已经引起市场和资本的⾼度关注,截⾄目前据不完全统计,全球范围已有500+虚拟数字人相关项目获得融资,融资总额超10亿美元,并且融资项目和总额 ...

  7. 从.net开发做到云原生运维(二)——.net core生态

    1. 新的开始从.net 6.0开始 .net 6.0作为一个长期支持版,具有里程碑的意义.从.net5.0将.net framework和.net core合并以后,在.net5.0的功能上再次完善 ...

  8. java-23种设计模式概述【软件设计模式基本介绍(是什么、作用、优点)、模式的分类和介绍】

    一.设计模式基本介绍(是什么.作用.优点) 1.软件设计模式是什么? 软件设计模式(Software Design Pattern),又称设计模式. 2.设计模式的作用 ★ 提高代码的可复用性.可维护 ...

  9. 如何制作报表?报表教程:适合你的热销车TOP25

    移动端看报表已成主流,Smartbi今天不是要告诉大家这是为什么,而是要实实在在的教大家,移动端报表应该怎么做,下面以Smartbi云报表的DEMO库中的"适合你的热销车TOP25" ...

  10. 【C#表达式树 七】 反射在表达式树中的应用 ListInitExpression

    以下都是反射在表达式树中的应用 对象初始化 Expression.MemberInit 反射获取成员(字段 或者属性),绑定数据,然后生成 成员表达式节点 class Animal { public ...