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 02 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
Python实现最大子序和的方法示例
Jul 05 Python
django认证系统 Authentication使用详解
Jul 22 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
Python matplotlib可视化实例解析
Jun 01 Python
python安装第三方库如xlrd的方法
Oct 31 Python
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
Apr 14 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
php adodb分页实现代码
2009/03/19 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
javascript some()函数用法详解
2014/11/13 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
小程序实现投票进度条
2019/11/20 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
机械制造毕业生求职信
2014/03/03 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
企业文明单位申报材料
2014/05/16 职场文书
大学生心理活动总结
2014/07/04 职场文书
2014年检验员工作总结
2014/11/19 职场文书
奖学金感谢信
2015/01/21 职场文书
北京颐和园导游词
2015/01/30 职场文书
捐款仪式主持词
2015/07/04 职场文书