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中操作时间之mktime()方法的使用教程
May 22 Python
Python对文件操作知识汇总
May 15 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
使用Python 统计高频字数的方法
Jan 31 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 Python
Python如何输出百分比
Jul 31 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
理解PHP5中static和const关键字的区别
2007/03/19 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
Python二维码生成识别实例详解
2019/07/16 Python
信号生成及DFT的python实现方式
2020/02/25 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
安全大检查反思材料
2014/01/31 职场文书
高中同学会活动方案
2014/08/14 职场文书
任命通知范文
2015/04/21 职场文书
申请吧主发表的感言
2015/08/03 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
详解Python中*args和**kwargs的使用
2022/04/07 Python