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. 【CF632F】Magic Matrix(生成树 脑洞)

    题目链接 大意 给定一个\(N\times N\)的矩阵,问是否满足以下三个条件: \(A_{i,i}=0\) \(A_{i,j}=A_{j,i}\) 对于任意的\(i,j,k\),满足\(A_{i, ...

  2. API 接口的安全设计验证:ticket,签名,时间戳

    一.背景 1.与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据 2.与第三方公司的接口对接,第三方如果得到你的接口文档,但是接口确没安全校验,是十分不安 ...

  3. 踩坑系列-Java Calendar

    Calendar是Java util包下的日期Api,其中获取月份是当前月份-1 public class Demo { public static void main(String[] args) ...

  4. Involuting Bunny! (2021.9)

      文化课就很掉头发,文科都能学好我还怕竞赛?(   大概从"刷的题的题解"推广为"所有做的题的题解"吧,兔子比较懒,这样写题解轻松一些.   Gym10305 ...

  5. Solution -「LOCAL」客星璀璨之夜

    \(\mathcal{Description}\)   OurOJ.   给定坐标轴上的 \(2n+1\) 个坐标 \(x_1,x_2,\cdots,x_{2n+1}\),其中偶数下标的位置是一个小球 ...

  6. Numpy的各种下标操作

    技术背景 本文所使用的Numpy版本为:Version: 1.20.3.基于Python和C++开发的Numpy一般被认为是Python中最好的Matlab替代品,其中最常见的就是各种Numpy矩阵类 ...

  7. [LeetCode]1528. 重新排列字符串

    给你一个字符串 s 和一个 长度相同 的整数数组 indices . 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置. 返回重新排列后的字符串. 示例 1: ...

  8. Python 中线程和进程

    目录 线程和进程 一. 什么是进程 / 线程 1. 引论 2. 线程 3. 进程 4. 区别 5. 使用 二. 多线程使用 1. 常用方法 2. 常用参数 3. 多线程的应用 3.1 重写线程法 3. ...

  9. Gerrit的用法及与gitlab的区别

    来到一个新的团队,开发的代码被同事覆盖了.找同事核实,同事却说根本没有看到我的代码.经过一番沟通了解,原来他们的代码没有直接在gitlab上操作,而是先提交到gerrit,然后在提交到git.但是代码 ...

  10. bi数据可视化平台带来的企业变化

    相信现在互联网的发展,大家有目共睹,在互联网的快速发展下,所产生的数据已经成为庞然大物,各行各业都在进行数据化转型,大数据分析也就成了香饽饽,bi数据可视化平台能够让数据可视化,通过数据分析可以业务人 ...