# 转载请留言联系

  • 模型管理器

模型管理器:objects属性

  1. 每个模型类默认都有一个叫 objects 的类属性,它由django自动生成
  2. 我们把 objects 称为 模型管理器,其类型为: django.db.models.manager.Manager
  3. 通过objects属性,可以实现对数据库相关的操作,常用方法如下
objects管理器中的方法 返回类型 作用
模型类.objects.create() 模型类对象 创建一个对象(新增一条数据)
模型类.objects.get() 模型对象 查询一个对象,且只能有一个:
如果查到多条数据,则报:MultipleObjectsReturned
如果查询不到数据,则报:DoesNotExist
模型类.objects.all() QuerySet 查询所有的对象
模型类.objects.count() 数字 查询总共有多少条数据
模型类.objects.filter() QuerySet 查询满足条件的对象
模型类.objects.exclude() QuerySet 查询不满条件的对象
模型类.objects.order_by() QuerySet 对查询结果集进行排序
模型类.objects.aggregate() 字典,例如:
{'salary__avg': 9500.0}
进行聚合操作
Sum, Count, Max, Min, Avg
模型类.objects.exists() True或者False True表示有查询集中有数据,否则没有

注意:get()在sqlchemy中只能填主键,django的可以填任意的,只需要保证查出来的是一条数据即可。不然会报错。

拓展

QuerySet支持切片操作:

1.query_set[0]:取出查询集的第一条数据,不存在会抛IndexError异常。

2.query_set[0:2]也可以,但是注意下标不支持负数!

例如有两张表,员工与部门,他们是一对多关系。现在对他们的数据进行操作。

1.模型对象.save()

# 新增员工
e = Employee()
e.name = "chichung"
e.age = 23
# 特别注意这句!!!
e.department = Department.objects.get(id=1)
e.save()

当插入关联属性时,先查出要关联的对象,然后再赋值。如果直接写e.department = 1的话,根据员关联查询会出现问题的。

2.模型类.objects.create(属性1=值1,属性2=值2,...)

Employee.objects.create(name = "chichung",age = 23,department = Department.objects.get(id=1))

1.模型类对象.delete()

e = Employee.objects.get(id=1)
e.delete()

2.模型类.filter(条件).delete()

Employee.objects.filter(id=1).delete()

拓展:

这两种方式删除有什么区别呢?

第一种,会先查询,这时候调用了一条SQL语句。然后删除,又调用了一条SQL语句。所以效率比较低。

第二种,直接执行一条SQL语句进行删除,所以效率比较高。

第一种的使用场景是,开头有用到,已经查询了,然后直接调用删除,那么实际删除也只是用了一条。

1.模型类对象.save()

e = Employee.objects.get(id=1)
e.name = "mouren"
e.save()
# 注意,当id已存在时,才是修改操作,不然是新增操作

2.模型类.filter(条件).update(属性1=值1,属性2=值2,...)

Employee.objects.filter(id=1).update(name="某人")

django自带的orm增删改的更多相关文章

  1. Django 自带的ORM增删改查

     通过Django来对数据库进行增删改查 1 首先创建类,在app应用程序里面的model模块里面创建类,写好数据库信息,方便我们待会初始化: 2 创建在django项目里面的settings里面添加 ...

  2. Django框架(三)—— orm增删改查、Django生命周期

    目录 orm增删改查.Django生命周期 一.orm介绍 二.orm增删改字段 三.Django生命周期 orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object ...

  3. Django框架(三)-- orm增删改查、Django生命周期

    一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...

  4. ORM增删改查并发性能测试2

    前言 上一篇<ORM增删改查并发性能测试>出现了点小失误,有的输出SQL日志的代码没有禁用,数据库连接字符串可能有问题.统一环境,统一代码后,重新写一篇. 这次重点是并发性能测试,真不是为 ...

  5. 饮冰三年-人工智能-Python-24 Django ORM增删改查

    一:首先使用默认的sqlite3创建表 1:现在在models.py中添加表模型 from django.db import models # Create your models here. cla ...

  6. $Django orm增删改字段、建表 ,单表增删改查,Django请求生命周期

    1 orm介绍  ORM是什么   ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM.  一 ...

  7. django ORM 增删改查 模糊查询 字段类型 及参数等

    ORM 相关 #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (), gen ...

  8. day054 组件 CBV FBV 装饰器 ORM增删改查

    组件: ​ 把一小段HTML 放在一个HTML中 nav.html ​ 使用: ​ {% include ‘nav.html ’ %} 一. FBV 和CBV 1.FBV(function base ...

  9. 巨蟒python全栈开发django5:组件&&CBV&FBV&&装饰器&&ORM增删改查

    内容回顾: 补充反向解析 Html:{% url ‘别名’ 参数 %} Views:reverse(‘别名’,args=(参数,)) 模板渲染 变量 {{ 变量名 }} 逻辑相关 {% %} 过滤器: ...

随机推荐

  1. DFS(2)——hdu1241Oil Deposits

    一.题目回顾 题目链接:Oil Deposits 题意:给你一块网格,网格被分为面积相等的地块,这些地块中标记'@'的是油田,标记'*'的不是油田.已知一块油田与它上下左右以及对角线的油田同属一片油区 ...

  2. Linux yum安装MySQL5.7,及远程连接mysql(亲测有效!)

    一.安装配置MySQL的yum源 # 安装MySQL的yum源,下面是RHEL6系列的下载地址 rpm -Uvh http://dev.mysql.com/get/mysql-community-re ...

  3. hadoop worldcount小程序

    首先在hadoop中建立input文件夹放几个文件,里边写点东西.比如我放了三个,分别写的是 第一个 hello hadoop bye hadoop 第二个 hello world bye world ...

  4. jetty maven插件

    <plugins>   <plugin>    <groupId>org.eclipse.jetty</groupId>    <artifact ...

  5. systemtap如何写C函数 捎带着看看ret kprobe怎么用

    在systemstap中自定义函数 Embedded C can be the body of a script function. Instead enclosing the function bo ...

  6. 多线程 定时器 Timer TimerTask

    定时器是一种特殊的多线程,使用Timer来安排一次或者重复执行某个任务 package org.zln.thread; import java.util.Date; import java.util. ...

  7. line-height用法总结

    Line-height是前端用语,经常被前端开发人员经常使用. line-height设置1.5和150%有什么区别?这是一个比较常见的前端面试题. 定义: line-height指的是文本行基线间的 ...

  8. [洛谷P1361]小M的作物

    题目大意:将作物种在A,B两地,对于每种作物,种A,B分别有不同的收益,对于一些特殊的作物集合,共同种到A,B集合分别有一些额外收益.求最大收益. 题解:最小割,S向i连容量为$a_i$的边,i向T连 ...

  9. EOS docker开发环境

    EOS Wiki提供了有关如何使用docker容器编译最新版本代码的说明.但可能有它自己的一些问题,因此我们鼓励你在学习时引用下面镜像.这样最初会更容易,更快. 如果你还没有安装docker,请在此处 ...

  10. poj 1523 割点 tarjan

    Description Consider the two networks shown below. Assuming that data moves around these networks on ...