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的几条建议分享
Feb 10 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
python通过smpt发送邮件的方法
Apr 30 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
Dec 19 Python
Python 查看文件的编码格式方法
Dec 21 Python
Flask-Mail用法实例分析
Jul 21 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
Python获取字典中某个key的value
Apr 13 Python
Python中requests库的用法详解
Jun 05 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
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
javascript 闭包详解
2015/07/02 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
python中hashlib模块用法示例
2017/10/30 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
python实现简易云音乐播放器
2018/01/04 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
学前教育学生自荐信范文
2013/12/31 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
商业门面租房协议书
2014/11/25 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
Python基础之元编程知识总结
2021/05/23 Python
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS