对Django项目中的ORM映射与模糊查询的使用详解


Posted in Python onJuly 18, 2019

ORM映射

什么是ORM映射?在笔者认为就是对SQL语句的封装,所写语句与SQL对应语句含义相同,使开发更加简单方便,不过也是存在弊端的,使程序运行效率下降。例如:

UserInfo.objects.get(id=2)

等于

select * from user_userinfo where id=2

修改管理器(models.py)

导入新的包:from django.db import models

进行模糊查询

开始进行查找前我们先来认识filter()方法。

这是一个过滤器方法用于过滤掉不符合条件的元素。

值得一提的是其内自带方法函数的引用方式为‘__方法名称'。

__exact 精确等于 like ‘aaa'

__iexact 精确等于 忽略大小写 ilike ‘aaa'

__contains 包含 like ‘%aaa%'

__icontains 包含 忽略大小写 ilike ‘%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。

__gt 大于

__gte 大于等于

__lt 小于

__lte 小于等于

__in 存在于一个list范围内

__startswith 以…开头

__istartswith 以…开头 忽略大小写

__endswith 以…结尾

__iendswith 以…结尾,忽略大小写

__range 在…范围内

__year 日期字段的年份

__month 日期字段的月份

__day 日期字段的日

__isnull=True/False

举几个例子:

obj1 = UserInfo.objects.filter(user_name__contains='王')#以‘王'开头的user__name
obj2 = UserInfo.objects.filter(user_name__endswith='王')#以‘王'结尾的user__name
obj3 = UserInfo.objects.filter(id__gte=5)#ID大于等于5的
obj5 = UserInfo.objects.filter(id__exact=5)#id等于5的
obj6 = UserInfo.objects.filter(id__in=[1,3,5])#id等于1,3,5,的

exclude方法,排除选项。

obj8 = UserInfo.objects.filter(password='123456',id__gt=2).exclude(phone=188)
#找到符合filter的内容后排除phone等于188的,它的另一种写法为
from django.db.models import Q
obj = UserInfo.objects.filter(Q(password='123456') & Q(id__gt=2) & ~Q(phone=188))

计算和和最大值:

from django.db.models import Sum,Max,Min
obj = UserInfo.objects.aggregate(Sum('id'))
obj = UserInfo.objects.aggregate(Max('id'))
obj = UserInfo.objects.aggregate(Min('id'))

统计个数

print(UserInfo.objects.count())#注:print只可于终端查看

范围查找

obj = UserInfo.objects.all()[1:3]#左闭右开,只查找了1和2

去重复

obj = person.useraddress_set.all()

而get方法与filter的最大区别为,get只能返回一个数据,filter可以返回多个,在get查找到两个以上数据时就会报错。

obj4 = UserInfo.objects.get(id=5)
city = UserAddress.objects.get(detail='北京望京')

以上这篇对Django项目中的ORM映射与模糊查询的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现带验证码网站的自动登陆实现代码
Jan 12 Python
Python合并字符串的3种方法
May 21 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
python 定时修改数据库的示例代码
Apr 08 Python
Python3多线程操作简单示例
May 22 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
Django基础知识 web框架的本质详解
Jul 18 #Python
django 使用全局搜索功能的实例详解
Jul 18 #Python
Django中Middleware中的函数详解
Jul 18 #Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 #Python
react+django清除浏览器缓存的几种方法小结
Jul 17 #Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 #Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 #Python
You might like
星际争霸秘籍
2020/03/04 星际争霸
ie focus bug 解决方法
2009/09/03 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
百度地图api如何使用
2015/08/03 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
详解js删除数组中的指定元素
2018/10/31 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python 数据结构之旋转链表
2017/02/25 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
文明教师事迹材料
2014/01/16 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Python如何配置环境变量详解
2021/05/18 Python