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 16 Python
Python中itertools模块用法详解
Sep 25 Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python获取当前路径实现代码
May 08 Python
numpy自动生成数组详解
Dec 15 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
python通过http下载文件的方法详解
Jul 26 Python
python 求10个数的平均数实例
Dec 16 Python
Python安装whl文件过程图解
Feb 18 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获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
Python写入数据到MP3文件中的方法
2015/07/10 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
PyQt5实现简易计算器
2020/05/30 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
初中地理教学反思
2014/01/11 职场文书
信息技术培训感言
2014/03/06 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
毕业欢送会致辞
2015/07/29 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript