Django框架——基础之模型系统(ORM相关操作)
------------恢复内容开始------------
1.必定会的十三条!
1.1记忆方法一:(按字母顺序记忆)
<1> all(): 查询所有结果
<2> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<3> distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)
<4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<6> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
<7> first(): 返回第一条记录
<8> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<9> last(): 返回最后一条记录
<10> order_by(*field): 对查询结果排序
<11> reverse(): 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。
<12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
1.2记忆方法二:(分类记忆)
返回QuerySet对象的方法有(6个)
all()
filter()
exclude()
order_by()
reverse()
distinct()
返回具体对象的(3个)
get()
first()
last()
特殊的QuerySet(2个)
values() 返回一个可迭代的字典序列
values_list() 返回一个可迭代的元祖序列
返回布尔值的方法有(1个)
exists()
返回数字的方法有(1个)
count()
2.单表查询之双下划线
models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值 models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in models.Tb1.objects.filter(name__contains="ven") # 获取name字段包含"ven"的
models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感 models.Tb1.objects.filter(id__range=[1, 3]) # id范围是1到3的,等价于SQL的bettwen and 类似的还有:startswith,istartswith, endswith, iendswith date字段还可以:
models.Class.objects.filter(first_day__year=2017)
3.ForeignKey操作
3.1正向操作
对象查询(跨表)
语法:
对象.关联字段.连表字段
示例:
book_obj = models.Book.objects.first() # 第一本书对象
print(book_obj.publisher) # 得到这本书关联的出版社对象
print(book_obj.publisher.name) # 得到出版社对象的名称
字段查找(跨表)
语法:
关联字段__连表字段(双下划线)
示例:
print(models.Book.objects.values_list("publisher__name"))
3.2反向操作
对象查找
语法:
obj.表名_set
示例:
publisher_obj = models.Publisher.objects.first() # 找到第一个出版社对象
books = publisher_obj.book_set.all() # 找到第一个出版社出版的所有书
titles = books.values_list("title") # 找到第一个出版社出版的所有书的书名
字段查找
语法:
表名__字段
示例:
titles = models.Publisher.objects.values_list("book__title")
简单对比记忆:(注意下划线是双还是单)
正向:
按对象:对象.字段名.连表字段
按字段:关联字段__连表字段
反向:
按对象:对象.表名_set
按字段:表名__字段
------------恢复内容结束------------
必定会的十三条!
记忆方法一:(按字母顺序记忆)
<1> all(): 查询所有结果
<2> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<3> distinct(): 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)
<4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<6> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
<7> first(): 返回第一条记录
<8> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<9> last(): 返回最后一条记录
<10> order_by(*field): 对查询结果排序
<11> reverse(): 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。
<12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
记忆方法二:(分类记忆)
返回QuerySet对象的方法有(6个)
all()
filter()
exclude()
order_by()
reverse()
distinct()
返回具体对象的(3个)
get()
first()
last()
特殊的QuerySet(2个)
values() 返回一个可迭代的字典序列
values_list() 返回一个可迭代的元祖序列
返回布尔值的方法有(1个)
exists()
返回数字的方法有(1个)
count()
Django框架——基础之模型系统(ORM相关操作)的更多相关文章
- Django框架——基础之模型系统(ORM的介绍和字段及字段参数)
1.ORM简介 1.1 ORM的概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM ...
- Django框架——基础之视图系统(View.py)
Django框架之View.py(视图文件) 1. 视图简介 视图层是Django处理请求的核心代码层,我们大多数Python代码都集中在这一层面. 它对外接收用户请求,对内调度模型层和模版层,统合数 ...
- Django框架——基础之路由系统(urls.py)
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django框架——基础之路由系统(urls.py)11111111
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django框架基础-MTV模型
一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref模块的图片 一.MTV模型 Django的MTV分别代表: Model(模型):和数据库相关的,负 ...
- Django框架基础知识13-auth系统
我们昨天登录admin时创建的用户信息是存放在哪里了呢? auth系统的数据表: 从表的名称我们就能看出, auth_user,auth_group,auth_permission分别存放了用户,用户 ...
- Django框架——基础之模板系统(template文件夹)
---恢复内容开始--- 1. 常用语法 需要记住两组特殊符号:{{ }} 和 {% %}. 在运用到变量的时候使用{{ }},如果是跟逻辑相关的话就使用{% %}. 在Django模板(t ...
- Django框架详细介绍---ORM相关操作
Django ORM相关操作 官方文档: https://docs.djangoproject.com/en/2.0/ref/models/querysets/ 1.必须掌握的十三个方法 <1& ...
- django框架基础-ORM单表操作-长期维护
############### 单表操作-添加数据 ################ import os if __name__ == '__main__': os.environ.set ...
随机推荐
- swift 高级模式匹配 if case
let age = 22 let sex = "girl" if (sex == "girl" && age >= 18 &&am ...
- C++学习 之 初识变量和基本类型 之 内置类型
声明: 本人自学C++, 没有计算机基础,在学习的过程难免会出现理解错误,出现风马牛不相及的现象,甚至有可能会贻笑大方. 如果有幸C++大牛能够扫到本人的博客,诚心希望大牛能给予 ...
- Fragment的生命周期和activity如何的一个关系
- APP营销软件项目常见(合规)风险评估
一个软件项目开始前,往往需要先进行风险评估以及可行性评估,尤其涉及到营销拉新类项目,需要大量依靠用户二次分享传播,为了避免项目做了无用功,分享一些常见的App项目风险: 微信分享功能 风险: 1.蒙层 ...
- C基础知识(14):命令行参数
命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数. 应当指出的是,argv[0]存储程序的名称,argv[1]是一个 ...
- 2019 1月 第三次java基础有感
毕业半年了,一直在游戏公司做游戏服务器开发,java语言. 工作中,写着写着代码,接触java多了,有时候就会发现自己的java基础会不够用.以前实习的时候也体会到一次,然后过了一遍基础.现在正式工作 ...
- python数据存储-- CSV
CSV,其文件以纯文本形式存储表格数据(数字和文本),CSV记录简由某种换行符分隔字段间分隔又其他字符,常见逗号或者制表符, 例如: #coding:utf-8 import csv headers ...
- python3速查参考- python基础 1 -> python版本选择+第一个小程序
题外话: Python版本:最新的3.6 安装注意点:勾选添加路径后自定义安装到硬盘的一级目录,例如本人的安装路径: F:\Python 原因:可以自动添加python环境变量,自动关联.py文件,其 ...
- Unity中的动画系统和Timeline(3) 模型和动画导入
动画导入 美工做好的模型,直接将文件夹拖进来就导入好了.导入模型后,检查模型的材质贴图等是否丢失,若丢失,根据名字补上.如果美工取名规范,一一对应的话,就很简单.如果不是,那就呵呵哒. 有的美工做的比 ...
- weiphp记录
jae 上传必须包括这2个文件,不然又会重新安装 标志文件有两个:Application/Install/Data/install.lockApplication/User/Conf/config.p ...