django admin管理工具自定义时间区间筛选器DateRangeFilter介绍


Posted in Python onMay 19, 2020

django admin管理工具有很多好用的功能,例如搜索框、筛选器等,编码简单,功能强大。

但是常规的时间筛选有一定局限性,只能显示一定时间节点到当前时间这一段时间段内的筛选结果,做不到自由定义时间段筛选,本人找到了可以实现这一功能的插件,就是今天要介绍的DateRangeFilter。

注意: DateRangeFilter只适用于Django 1.4以上的版本。

插件安装

使用 pip或easy_install:

pip install django-daterange-filter

修改配置

在settings.py中的INSTALLED_APPS如下加入配置项:

INSTALLED_APPS = (
  ...
  'daterange_filter'
)

加入筛选器

假设你需要普通筛选和通过时间区间进行筛序的字段在models.py里分别是这么写的:

class TaskModel(models.Model):
  ...
  user_name = models.CharField(u'用户名', max_length=128)
  submit_time = models.DateTimeField(u'提交时间', auto_now_add=True)
  ...

那么,在admin.py引入筛选器插件:

from daterange_filter.filter import DateRangeFilter

以上这点是文档中最容易被忽视的部分,所以这里单独列出来以引起重视。

admin.py中涉及到的DateRangeFilter筛选器完整的部分应该这么写:

from daterange_filter.filter import DateRangeFilter
from django.contrib import admin
from models import TaskModel

class TaskAdmin(admin.ModelAdmin):
  list_filter = (
    'user_name',
    ('submit_time', DateRangeFilter), # this is a tuple
    ...
  )

在admin页面上注册后就可以看到效果了。

django admin管理工具自定义时间区间筛选器DateRangeFilter介绍

参考链接:https://pypi.org/project/django-daterange-filter/1.1.1/

补充知识:python django orm 过滤 时间,数字比较方法

首先我们来现说一下富比较方法在实际工作中的运用场景,小编一般运用比较多的是时间的比较,数字比较,只要能比较的地方都可以用 如果说 我要创建一条信息,但是如果时间重叠 或者冲突就不能创建成功,

filter(
      (Q(start_time1__lt=start_time2) & Q(end_time1__gt=end_time2)) |
      Q(start_time1__range=(start_time, end_time)) |
      Q(end_time1__range=(start_time, end_time)))

来说上面的代码,__lt 是小于的意思 start_time1 小于 start_time2 & 并且 end_time1 大于 end_time2 __gt 是大于

‘|'是或者的意思 __range 给出一个时间范围 在一个范围之内 在start_time,到end_time 这个范围之间

以上这篇django admin管理工具自定义时间区间筛选器DateRangeFilter介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python对小数进行除法运算的正确方法示例
Aug 25 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
python实现归并排序算法
Nov 22 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
jupyter notebook 多行输出实例
Apr 09 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
在Django中自定义filter并在template中的使用详解
May 19 #Python
Django Model中字段(field)的各种选项说明
May 19 #Python
Django模板获取field的verbose_name实例
May 19 #Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 #Python
django ORM之values和annotate使用详解
May 19 #Python
基于python实现地址和经纬度转换
May 19 #Python
Python Django form 组件动态从数据库取choices数据实例
May 19 #Python
You might like
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
scrapy爬虫实例分享
2017/12/28 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python实现多张图片拼接成大图
2019/01/15 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
python将数组n等分的实例
2019/12/02 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
J2EE面试题集锦(附答案)
2013/08/16 面试题
单位在职证明范本
2014/01/09 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
交通安全月活动总结
2015/05/08 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书