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 网络编程详解及简单实例
Apr 25 Python
import的本质解析
Oct 30 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
Python实现的用户登录系统功能示例
Feb 05 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
python实现批量文件重命名
Oct 31 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 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脚本的10个技巧(3)
2006/10/09 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
php微信公众号开发之简答题
2018/10/20 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
Numpy之random函数使用学习
2019/01/29 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
详解Python IO编程
2020/07/24 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
销售员求职个人的自我评价
2014/02/19 职场文书
成龙洗发水广告词
2014/03/14 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
学生逃课检讨书
2015/02/17 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
金砖之国观后感
2015/06/11 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript