Django ORM

ORM(Objects Relational Mapping)

对象关系映射,是一种程序技术,用于实现对象编程语言里不同类型系统的数据之间的转换,ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。

ORM将对对象的操作转换为原生SQL
优点
易用性,可以有效减少重复SQL
性能损耗少
设计灵活,可以轻松实现复杂查询
移植性好

1.模型查询
a.模型成员objects
Django默认通过模型的objects对象实现数据查询
b.过滤器

Django有两种过滤器用于筛选记录

filter    : 返回符合筛选条件的数据集

exclude   : 返回不符合筛选条件的数据集

all() 返回所有数据
filter() 返回符合条件的数据
filter(条件1,条件2,条件3)
filter(条件1).filter(条件2).filter(条件3)
exclude() 查询不满足条件的数据

2.order_by() 排序
升序:模型名.objects.all().order_by('id')
降序:模型名.objects.all().order_by('id')

3.运算符
icontains:大小写不敏感
contains:大小写敏感
模型名.objects.filter(s_name__icontains='小')
startswith:以什么开始
endswith:以什么结束

gt gte:大于、大于等于 --->greater than greater than equal
lt lte:小于、小于等于
in:在范围之内

values() 一条数据就是一个字典,返回一个列表

c.查询单个数据
get():返回一个满足条件的对象
获取不到数据会报错
# get只能返回一个对象如果找到多个,会引发模型类MultiObjectsReturned异常



first():返回查询集中的第一个对象
last():返回查询集中的最后一个对象
count():返回当前查询集中的对象个数
exists():判断查询集中是否有数据,如果有数据返回True,没有返回False

查询或者条件/不等于条件
并且:filter(条件1,条件2,条件3)
或者:filter(Q(条件1) |Q(条件2))
取反:filter(~Q(条件1) | Q(条件2))

A字段和B字段进行算数运算
F()
filter(shuxue__gt = F('yuwen') + 10)

你可能感兴趣的:(Django ORM)