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 相关文章推荐
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
利用pandas读取中文数据集的方法
Jul 25 Python
python实现对输入的密文加密
Mar 20 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
pytorch自定义初始化权重的方法
Aug 17 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
如何基于Python实现数字类型转换
Feb 07 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 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
redis 队列操作的例子(php)
2012/04/12 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python字典DICT类型合并详解
2017/08/17 Python
详解如何使用Python编写vim插件
2017/11/28 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Python程序控制语句用法实例分析
2020/01/14 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
生物技术研究生自荐信
2013/11/12 职场文书
北京大学自荐信范文
2014/01/28 职场文书
社区义诊活动总结
2014/04/30 职场文书
反腐倡廉标语
2014/06/24 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python