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时间戳与时间字符串互相转换实例代码
Nov 28 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
python开发中module模块用法实例分析
Nov 12 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
Python中私有属性的定义方式
Mar 05 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
如何在Python项目中引入日志
May 31 Python
Python中文纠错的简单实现
Jul 07 Python
Python数组变形的几种实现方法
May 30 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
python Django模板的使用方法
2016/01/14 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
python urllib和urllib3知识点总结
2021/02/08 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
幼儿园父亲节活动方案
2014/03/11 职场文书
重阳节活动总结
2014/08/27 职场文书
重阳节标语大全
2014/10/07 职场文书
违纪开除通知书
2015/04/25 职场文书
党支部对转正的意见
2015/06/02 职场文书
民主生活会意见
2015/06/05 职场文书