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实现读取命令行参数的方法
May 22 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
python爬虫获取多页天涯帖子
Feb 23 Python
python实现人人自动回复、抢沙发功能
Jun 08 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
如何使用Python实现自动化水军评论
Jun 26 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
Python基于template实现字符串替换
Nov 27 Python
python中reload重载实例用法
Dec 15 Python
python pillow库的基础使用教程
Jan 13 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 Python
关于Python中*args和**kwargs的深入理解
Aug 07 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
使用 MySQL Date/Time 类型
2008/03/26 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
Python登录系统界面实现详解
2019/06/25 Python
浅析使用Python搭建http服务器
2019/10/27 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
实习单位推荐信
2015/03/27 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
Selenium浏览器自动化如何上传文件
2022/04/06 Python