django QuerySet
- Django对数据库的封装1——QuerySet
发布时间:2018-02-28 来源:网络 上传者:用户
关键字: manager 数据库 记录 影响
发表文章
- 摘要: Django对数据库的操作分用到三个类:Manager、QuerySet、Model。Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径
Django对数据库的操作分用到三个类:Manager、QuerySet、Model。Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径,那就是自定义manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;Model是一条记录的类,它的功能很强大,里面包含外键实体等,它的方法都是记录级方法(都是实例方法,无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager类中。
1.QuerySet 1.1 简介
每个Model都有一个默认的manager类,名为objects,QuerySet有两种来源:通过manager的方法得到、通过QuerySet的方法得到。QuerySet的最初来源就是通过manager的方法。mananger的方法和QuerySet的方法大部分同名,同意思,如filter(),update()等,但也有些不同,如manager有create()、get_or_create(),而QuerySet有delete()等。一个QuerySet包含一个或多个model instance。QuerySet类似于Python中的list,list的一些方法QuerySet也有,比如切片,遍历。
比如models.Author.objects
models.Author就是一个model,他有一个manager类,models.Author.objects ,这个类调用all()方法得到queryset对象
a=models.Author.objects.all()#a就是一个queryset对象
有些方法,通过manager和通过queryset调用,产生的效果是相同的,比如说filter方法,manager和queryset对象都有这个方法,而且
models.Author.objects.filter(id__gt=2)
和
models.Author.objects.all().filter(id__gt=2)
调用产生的结果是相同的
转载于:https://www.cnblogs.com/saolv/p/10285563.html
django QuerySet相关推荐
- Django QuerySet 就学那么一点点,一点点就够了
橡皮擦,一个逗趣的互联网高级网虫.新的系列,让我们一起进入 Django 世界. 已经完成的文章 滚雪球学 Python 第三轮,Python Web 之 Django 的世界 小手哆嗦一下,就能用 ...
- Django QuerySet API 文档阅读(3):QuerySet定义(一)
原文地址:QuerySet API reference | Django documentation | Django QuerySet有两个属性,ordered和db: ordered: ...
- Django学习笔记之Django QuerySet的方法
一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get.filter.exclude.delete神马的感觉就已经无所不能了,但随着项目但业 ...
- Django QuerySet API文档
在查询时发生了什么(When QuerySets are evaluated) QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作.只要你查询的时候才真正的操作数据 ...
- 合并多个python list以及合并多个 django QuerySet 的方法
尊重原文作者,该文转载于: http://www.yihaomen.com/article/python/533.htm 在用python或者django写一些小工具应用的时候,有可能会遇到合并多个l ...
- Django QuerySet优化
参考: https://docs.djangoproject.com/zh-hans/3.2/topics/db/optimization https://www.jianshu.com/p/aded ...
- Django Queryset用法
文章目录 filter/get get/update_or_create update django查询之Q对象.F对象.聚合查询.分组查询 QuerySet 并不是执行Objects.all(),或 ...
- Django QuerySet浅析
QuerySet 源码浅析 模型.objects: from django.http import HttpResponse from .models import Book def index(re ...
- Django QuerySet速查手册
Django为我们提供了一套与数据库交互的机制,让我们能够更便捷的对数据库进行增删改查.Django 对数据库的操作依赖于它的 ORM 系统,Django ORM 主要包括Manager.QueryS ...
最新文章
- Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
- go语言学习(4)接口,duck typing
- Java算法--串的简单处理
- List与Map的遍历过程中删除元素
- LAMP介绍,Apache安装细节过程
- SAP Spartacus如何创建自定义route页面
- jQuery缓存数据——仿Map
- 解决yum [Errno 256] No more mirrors to try
- python输入数据的维度_python – Keras LSTM输入维度设置
- 完整、详细的MySQL规范
- iVX低代码平台系列制作APP简单的个人界面
- 基于SpringBoot进销存ERP管理系统,源代码分享
- 数字图像处理技术对军事与公安的帮助
- ADS-B放大器KU1090
- 使用手册 煤矿风险管控系统_煤矿风险分级管控手册.doc
- [渝粤教育] 中原科技学院 设计学和美好生活 参考 资料
- Java项目:文具学习用品商城系统(java+SSM+JSP+jQuery+Mysql)
- Photo Shop教程(adobe的官方入门视频)
- 线性回归中常见的一些统计学术语(RSE RSS TSS ESS MSE RMSE R2 Pearson's r)
- glusterfs搭建
热门文章
- 1438.最小公倍数
- bzoj3322 最大生成树+LCA
- vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
- LeetCode:Generate Parentheses
- paip.批处理清理java项目冗余jar的方法
- 一个数学公式求解的优化
- MS CRM如果在Tab页中有Iframe选项,原来速度不慢,突然速度变慢
- 1.vue生命周期详解(2020.12.05)
- Ant-design-vue定制主题色
- 【博客项目】—登录验证功能实现( 五)