orm查询,如果遇到我之前的环境报错

就可去manage.py中拷贝前四行代码到tests文件中,然后增加两行代码:

import django
django.setup()

或者任意新建一个py文件,在上面写一样的配置

然后今天我们的主要内容是orm里的一些操作

1.单表操作

2.神奇的__查询

3.图书管理表设计

4.外键字段(一对多)的增删改查
5.外键字段(一对一)的增删改查

6.跨表查询

又可以分为子查询和联表查询

7.聚合查询

8.分组查询

9.F与Q查询

首先我们开始单表操作的十三条

1.all() 是查询所有

2.filter()是筛选

3.get()也是筛选,不过选到的是数据对象本身且容易报错,不推荐

4.first()取queryset中的第一个对象

5.last()取queryset中最后一个对象

6.count()统计数据的个数

7.value()获取对象中指定字段的值列表套字典

8.value_list()获取对象中指定字段的值列表

9.order_by()按照指定字段排序

10.reverse()颠倒顺序

11.exclude()排除什么什么之外

12.exists()可以判断是否有值

13.distinct()去重

还有一些神奇的__查询

假设我们已经成功创建了一个表

比如我们要查询价格大于五百的书籍

我们可以res=models.Books.objects.filter(price__gt=500)

__gt代表greater than 大于

__lt 小于

__gte greater than equal 大于等于

__lte 小于等于

__in=[] 是列表里面的固定数值

__range=()在这个范围之内

__year

__month

__date

年月日

__startswith 以''里的内容开头

__endswith 以''里内容结尾

__contain 里面包含''里的内容

一对多增删改查

增删改查都有两种方式

第一个

models.Book.objects.create(title='SOE-992',price=0,publish_id=1)

第二个

publish_obj=models.Publish.objects.filter(pk=2).first()

models.Book.objects.create(title='SILK-024',price=400,publish=publish_obj)

第一种

model.Book.objects.filter(pk=1).update(publish_id=2)

第二中

publish_obj=models.Publish.objects.filter(pk=1).first()
models.Book.object.filter(pk=1).update(publish=publish_obj)

删除
models.Book.object.filter(pk=1).delete()

多对多增删改查

book_obj=models.Book.objects.filter(pk=2).first()

book_obj.authors.add(1,2)

就是把上面的add改成delete

清空

也是把上面的add改成clear

嘿嘿,跨表查询开始啦

这里正向我只列出一个按字段

查询诗句主键为二的书的出版社的名字

book_obj=models.Book.objects.filter(pk=2).first()

print(book_obj.publish.name)

反向的话就是

publish_obj = models.Publish.objects.filter(name='91corn').first()
print(publish_obj.book_set)
app01.Book.None# print(publish_obj.book_set.all())

还有就是用__来找

查询书籍pk为2的出版社名称

正向

res=models.Book.object.filter(pk=2).value('publish_name')

反向

res=models.Publish.objects.filter(book__pk=2).values('name')

这里还是用实例来举例我们懂得快一点

深海Django少年的更多相关文章

  1. Django中的ORM介绍,字段以及字段的参数。

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  2. 信号(Django信号、Flask信号、Scrapy信号)

    简介 Django.Flask.scrapy都包含了一个“信号分配器”,使得当一些动作在框架的其他地方发生的时候,解耦的应用可以得到提醒. 通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒 ...

  3. Django ORM-01

    What is ORM Django ? ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ...

  4. 使用Django框架

    1.安装Django 在命令行模式下使用pip工具来安装Django,pip工具的安装方法见此篇 pip install django 2.确认是否安装成功 在Python交互模式下 import d ...

  5. Django之模板(Template)

    Django模板系统 官方文档 每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插 ...

  6. Django 的信号 & Flask 的信号

    信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...

  7. Django&,Flask&pyrthon原生sql语句 基本操作

    Django框架 ,Flask框架 ORM 以及pyrthon原生sql语句操作数据库 WHAT IS ORM? ORM( Object Relational Mapping) 对象关系映射 , 即通 ...

  8. docker配置mysql主从与django实现读写分离

    一.搭建主从mysql环境 1 下载mysql镜像 docker pull mysql:5.7 2 运行刚下载的mysql镜像文件 # 运行该命令之前可以使用`docker images`是否下载成功 ...

  9. django -- 模版语言之过滤器Filters和for循环

    前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }}            变量相关的 {% %}      ...

随机推荐

  1. String类可以被继承吗?我们来聊聊final关键字!

    String类可以被继承吗?我们来聊聊final关键字! String在java基础知识中绝对是个重点知识,关于String的一些问题也是非常的多,而且牵涉到内存等高级知识,在面试中也是经常被考察的一 ...

  2. js常用算术运算符与一元运算符在做运算时不同类型的转换规则

    /** * 算术运算符:+, -, *, /, % * 当对非number类型的值进行运算(-, *, /, %)时,会将这些值先转换成number再运算,加法'+'运算除外, * 当对非number ...

  3. Nhibernet Get方法获取数据后,修改字段,未保存,但是数据库的数据却同步了

    首先,对象是在session中取得的,所以这个对象已经和数据库同步了,或者说相关联了如果你的session中的对象发生变法,提交事务后,数据库中的数据也会更新未保存更改,不要以为session就不会在 ...

  4. 2019-10-31-WPF-等距布局

    title author date CreateTime categories WPF 等距布局 lindexi 2019-10-31 9:0:2 +0800 2018-2-21 17:3:4 +08 ...

  5. 安装双系统Windows+Centos安装完成之后提示双系统选项菜单!

    原因:在windows下安装centos系统完成之后重启无法显示windows系统菜单选项 1.安装Windows系统 2.安装Centos系统 3.在Centos系统中安装ntfs-3g yum i ...

  6. 转载:对比Angular/jQueryUI/Extjs:没有一个框架是万能的

    Angular不能做什么?对比Angular/jQueryUI/Extjs 框架就好比兵器,你得明白你手里拿的是屠龙刀还是倚天剑,刀法主要是砍,剑法主要是刺.对于那些职业喷子和脑残粉,小僧送你们两个字 ...

  7. private: CRITICAL_SECTION m_cs;

    CRITICAL_SECTION m_cs;   //临界区 私有数据成员  pop  数据结构 push 临界区 保护 2.类CCriticalSection的对象表示一个“临界区”,它是一个用于同 ...

  8. SurfaceView的基本使用(转)

    转自:https://www.cnblogs.com/zhangyingai/p/7087371.html SurfaceView的基本使用   一.引入: Android提供了View来进行绘图处理 ...

  9. 解决vue代理和跨域问题

    一.安装vue-resource插件 安装命令:npm install vue-resource --save  安装完之后在根目录下的package.json检查一下插件的版本 在rourer-in ...

  10. 【串线篇】Mybatis入门

    MyBatis是持久化层框架(SQL映射框架)-操作数据库 一.环境搭建 1).创建一个java工程,java工程就行: 2). 创建表:自己用工具创建 创建javaBean:Employee(封装表 ...