ORM的单表操作(ORM的14种方法详解)
ORM的API:
- <1> all(): 查询所有结果
- <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
- <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
- <4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
- <5> order_by(*field): 对查询结果排序('-id')
- <6> reverse(): 对查询结果反向排序
- <8> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
- <9> first(): 返回第一条记录
- <10> last(): 返回最后一条记录
- <11> exists(): 如果QuerySet包含数据,就返回True,否则返回False
- <12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
- <13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
- <14> distinct(): 从返回结果中剔除重复纪录
下划线查询:
- __exact: 精确等于,如SQL的like'开发'。 例:filter(job__exact='开发')
- __iexact: 精确等于并忽略大小写。 例:filter(job__iexact='开发')
- __contains: 模糊匹配,如SQL的like'%荣耀%'。 例:filter(job__contains='开发')
- __icontains: 模糊匹配,忽略大小写。 例:filter(job__icontains='开发')
- __gt: 大于。 例:filter(job__gt=5)
- __gte: 大于等于。 例:filter(job__gte=5)
- __lt: 小于。 例:filter(job__lt=5)
- __lte: 小于等于。 例:filter(job__lte=5)
- __in: 判断是否在列表内。 例:filter(job__in=[1,2,3])
- __startswith:以。。。开头。 例:filter(job__startswith='开发')
- __istartswith:以。。。开头并忽略大小写。 filter(job__istartswith='开发')
- __endswith: 以。。。结尾。 filter(job__endswith='开发')
- __iendswith: 以。。。结尾并忽略大小写。 filter(job__iendswith='开发')
- __range: 在。。。范围内。 filter(job__range='开发')
- __year: 日期字段的年份。 filter(job__year='2018')
- __month: 日期字段的月份。 filter(job__month='12')
- __day: 日期字段的天数。 例:filter(job__day=30)
- __isnull: 判断是否为空。 例:filter(job__isnull=True/False)
删除:
对象.delete() # 删一条
queryset对象.delete() # 对象包含多条可以删除
更新:
Book.objects.filter(title__startswith="py").update(price=120)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用