[TOC]
>[success] # ORM 查询常见的字段
>[danger] ##### 支持链式调用的
~~~
1.all()
--- 查询全部返回的是一个queryset类型
2.filter()
--- 过滤查询指定内返回的是一个queryset类型
3.exclude()
---它包含不满足查询参数的对象返回的是一个queryset类型
4.reverse()
---方法反向排序QuerySet 中返回的元素
5.distinct()
---去重和values搭配使用
6.none()
--- 调用none()将创建一个从不返回任何对象的查询集,并且在访问结果时不
会执行任何查询。
~~~
>[danger] ##### 不支持链式调用的接口
~~~
1.get()
--- 返回是一个对象,但不存在会报错注意处理,返回多个对象也会报错
2.create()
--- 插入一条数据
3.get_or_create()
--- 存在返回数据,不存在就创建数据
--- categories, is_creat = Categroy.objects.get_or_create(name="ss",owner_id=1)
返回两个参数,第一个参数是创建或者查询对象,第二个是是否创建,True就是创建成功打印结果‘Categroy object True’
4.update_or_create()
--- 更新创建数据
last
5.count()
--- 查询条数
6.latest()
---Categroy.objects.latest('name')
---使用作为段提供的field_name,通过order by 返回降序第一个
---'SELECT "blong_categroy"."id", "blong_categroy"."name", '
'"blong_categroy"."status", "blong_categroy"."is_nav", '
'"blong_categroy"."owner_id", "blong_categroy"."created_time" FROM '
'"blong_categroy" ORDER BY "blong_categroy"."name" DESC LIMIT 1',
7.earliest()
---同上返回升序第一个 'ASC'
8.first()
--- 默认通过id 降序返回第一个,在Meta 里面设置ordering=('id','create_tiem') 指定字段排序
9.last()
---默认通过id 升序返回第一个
10.exists()
---用于搜寻对象是否在QuerySet 中以及QuerySet 是否存在任何对象
---@override_settings(DEBUG=True)
def test_filter(self):
categories = Categroy.objects.filter(owner__username="wang").exists()
print(categories)
pp(connection.queries)
--- 'SELECT (1) AS "a" FROM "blong_categroy" INNER JOIN "auth_user" ON '
'("blong_categroy"."owner_id" = "auth_user"."id") WHERE '
'"auth_user"."username" = \'wang\' LIMIT 1',
--- 返回True
11.bulk_create()
---bulk_create()是执行一条SQL存入多条数据,里面是一个列表 执行的批量添加的sql
---用法 保存一组对象添加
user = User.objects.create_user("wang", "wang@qq", "wang1234")
for i in range(1, 10):
category_name = 'cate_%s' % i
category = Categroy(name=category_name, owner=user)
obj_list.append(category)
--- 执行的sql
'INSERT INTO "blong_categroy" ("name", "status", "is_nav", '
'"owner_id", "created_time") SELECT \'cate_1\', 1, 0, 1, \'2018-06-09 '
"04:51:33.025432' UNION ALL SELECT 'cate_2', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_3', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_4', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_5', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_6', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_7', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_8', 1, 0, 1, '2018-06-09 "
"04:51:33.025432' UNION ALL SELECT 'cate_9', 1, 0, 1, '2018-06-09 "
"04:51:33.025432'",
12.in_bulk()
---获取主键值的列表,并返回将每个主键值映射到具有给定ID的对象的实例的
字典。 如果未提供列表,则会返回查询集中的所有对象。
>>> Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}
>>> Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}
>>> Blog.objects.in_bulk([])
{}
>>> Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}
13.update()
---更新数据,只支持queryset 类型,也就是说支持链式调用的参数进行使用
14.delete()
---删除数据
~~~
>[danger] ##### 进阶接口--具体见ORM技巧篇
~~~
1.defer()
----除了什么字段以外
2.only()
----只查询什么字段
3.select_related()
----两个表关联的时候,差另一个表的信息 join on 用法
4.prefetch_related()
~~~
* 注 官方注解对select_related()解释
~~~
Returns a new QuerySet instance that will select related objects.
If fields are specified, they must be ForeignKey fields and only those
related objects are included in the selection.
If select_related(None) is called, the list is cleared.
~~~
* 简单的说无参就是默认,查ForeignKey,有差数是你去指定关联的ForeignKey
~~~
返回一个新的QuerySet实例,它将选择相关的对象。
如果字段被指定,它们必须是外键字段,只有那些字段
相关的对象包含在选择中。
如果调用selectrelated(None),则清除列表。
~~~
>[danger] ##### F/Q具体见ORM技巧/常见问题篇
* F专门取对象中某列值的操作,也可以做并发处理
~~~
from django.db.models import F
models.Tb1.objects.update(num=F('num')+1)
~~~
* Q 条件查询
~~~
from django.db.models import Q
categories = Categroy.objects.filter(Q(id=1) | Q(id=2))
---- 打印的语句
'SELECT "blong_categroy"."id", "blong_categroy"."name", '
'"blong_categroy"."status", "blong_categroy"."is_nav", '
'"blong_categroy"."owner_id", "blong_categroy"."created_time" FROM '
'"blong_categroy" WHERE ("blong_categroy"."id" = 1 OR '
'"blong_categroy"."id" = 2) LIMIT 21'
~~~
- 网络原理
- 为搭建框架做准备
- 简单认识网路
- 自定义模拟网站案例
- 优化最终框架
- 数据存储 -- data
- 用户个人信息存储 -- User.txt
- 路由映射 -- routes
- 处理用户信息 -- routes_static.py
- 保存静态文件 -- static
- templates -- html 集中处理模块
- 首页 -- index.html
- 登陆 -- login.html
- 用户注册页面 -- register
- 日志模块 -- log.gua.txt
- 启动文件--server.py
- orm处理 -- model.py
- 日志模块 -- utils.py
- 两种数据库类型
- 传统数据库了解篇
- 前端快速入门
- JS简单使用入门
- css简单快速入门
- DJANGO
- virtualenv-创建虚拟环境
- 项目结构
- django-admin中文配置
- django-打印sql语句
- django-基础
- 认识MVC和MTV
- Django--初识
- Django--初识案例
- Django-FBV/CBV
- Django--常用input 交互
- Django-url
- Django-url.py 配置
- Django-include 使用
- Django-url name
- Django-ORM
- ORM-数据库配置
- ORM-model字段
- ORM-model字段解释
- ORM-字段选项
- ORM-查询
- ORM-四种常用查询方法
- ORM-三种获取数据
- ORM-其他查询方式
- ORM-条件查询双线
- ORM-Q和F条件使用
- ORM-三种数据库交互
- 案例 -- 一对多
- ORM-技巧/常见问题
- ORM-N+1 问题
- ORM-并发的处理
- ORM-数量查询、
- ORM-正向反向查询
- ORM-基础案例一
- ORM-基础一对多案例
- Django-templates
- Django-模板的继承
- Django-模板的过滤
- Django-自定义模板的过滤
- Django-cookie
- Django-cookies 装饰器
- Djang-session
- Django-CSRF
- Django-中间件 -- 后续了解
- Django- 缓存 -- 没有深入了解
- Django-form
- From-ajax
- form-内部验证处理
- form-属性
- form-常用的标签字段
- form-常用的下拉和选择
- form-widget速查
- Django-ajax序列化
- Django-多种ajax写法
- ajax-原生写法
- ajax-$写法
- ajax-ifram
- Django-ajax图片上传
- ajax-原始写法
- ajax-正常写法
- iframe+form
- 实战写法
- Django-常用自编写组件
- Django-双菜单组合搜索
- Django - 多菜单组合搜索
- Django-分页
- django-综合基础
- 综合基础-render
- django-admin
- admin-页面配置
- admin-字段配置
- admin-编辑页面
- admin-forms验证
- admin-创建抽象类
- django-验证码
- 验证码-第三方生成库
- 验证码-view.py使用
- 验证码-注意引入Monaco.ttf
- django-用户注册
- 注册-form 模块
- 注册-views 模块
- 注册-html模块
- 注册-model模块
- django-用户登录三种
- session登录
- form-session 写法
- view-写法
- Html-写法
- model-写法
- 继承类登录
- 外键关联登录
- django-简单的student 管理案例
- app-urls.py
- app-models.py配置
- admin-admin.py配置
- app-form.py 和数据库关联的写法
- app-FBV_views.py
- app-CBV_views.py
- templates-index.html
- django-博客系统
- APP目录-models.py 创建
- APP目录-基础展示数据分析
- APP目录-基础数据展示cls
- ListView
- DetailView
- FormView
- 额外功能拓建
- 添加文章搜索/用户文章查询功能
- 增加一个友情链接
- 增加一个评论模块
- App-利用Bootstrap4 搭建样式
- 项目crm
- 思维导图
- perfectCRM-项目名字
- settings.py-配置
- view.py-登陆/登出函数
- crm-app文件
- model.py-表的创建
- admin.py-注册后台
- view.py-视图层
- static-静态文件
- css
- bootstrap.min.css
- dashboard.css
- ie10-viewport-bug-workaround.css
- signin.css
- fonts
- imgs
- js
- jquery.js
- bootstrap.min.js
- holeder.js
- ie10-viewport-bug-workaround.js
- ie-emulation-modes-warning.js
- plugins
- html模板文件-templates
- crm
- index.html-首页模板