Django models filter筛选条件详解


Posted in Python onMarch 16, 2020

条件选取querySet的时候,filter表示=,exclude表示!=。

querySet.distinct() 去重复

__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

例q1.filter(pub_date__gte=datetime.date.today())表示为时间>=now,q1.exclude(pub_date__gte=datetime.date.today())表示为<=now

“在django models中取得一个字段的distinct值”。

就是select distinct xxx from table_name ...这样的功能。

使用values会生成ValuesQuerySet(形如N个dict组成的list),猜测大数据无额外性能影响,毕竟queryset系列都是使用时才查询操作的。

xxxx.objects.values("field_name").distinct()

或者

xxxx.objects.distinct().values("field_name")

补充知识:django中的objects.get和objects.filter方法的区别

为了说明它们两者的区别定义2个models

class Student(models.Model): 
   name = models.CharField('姓名', max_length=20, default='') 
   age = models.CharField('年龄', max_length=20, default='') 
class Book(models.Model): 
   student = models.ForeignKey(Student)

一. 先说下django的obj.get():

django的get是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。

比如我数据库里有一条记录,记录的name的值是"django"的话,我用student = Student.objects.get(name='django'),

返回的是一个记录对象,你可以通过student.__dict__来查看,它返回的是一个字典的形式,{'key':valeus},key是字段的名称,而values是值的内容。

而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。

比如:

student = Student.objects.get(name='python')

如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。

比如我的student表里有一个记录:

id name age
1 python 24

book表:

id student_id
1 1
2 1

我用

student = Student.objects.get(name='python') 
  book = Book.objects.get(student)

它也会报错,因为book表有2条记录和student表相匹配。

二. 再说下django filter:

django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

比如我数据库里有一条记录,记录的name的值是Python的话,我用

student = Student.objects.filter(name='python')

它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。

以上这篇Django models filter筛选条件详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入解析Python中函数的参数与作用域
Mar 20 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python制作刷网页流量工具
Apr 23 Python
Python探索之ModelForm代码详解
Oct 26 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
Python离线安装openpyxl模块的步骤
Mar 30 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 #Python
django 前端页面如何实现显示前N条数据
Mar 16 #Python
Python迭代器Iterable判断方法解析
Mar 16 #Python
python 递归调用返回None的问题及解决方法
Mar 16 #Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 #Python
django中的数据库迁移的实现
Mar 16 #Python
django之从html页面表单获取输入的数据实例
Mar 16 #Python
You might like
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
koa socket即时通讯的示例代码
2018/09/07 Javascript
使用python Django做网页
2013/11/04 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python让列表倒序输出的实例
2018/06/25 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
土木工程应届生求职信
2013/10/31 职场文书
读书活动实施方案
2014/03/10 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
法制宣传月活动方案
2014/05/11 职场文书
预防传染病方案
2014/06/14 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
实习工作表现评语
2014/12/31 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL