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类的专用方法实例分析
Jan 09 Python
举例讲解Python中装饰器的用法
Apr 27 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
详谈python在windows中的文件路径问题
Apr 28 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
值得收藏,Python 开发中的高级技巧
Nov 23 Python
Python地图绘制实操详解
Mar 04 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php设计模式  Command(命令模式)
2011/06/17 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
Vue左滑组件slider使用详解
2020/08/21 Javascript
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
高中地理教学反思
2014/01/29 职场文书
教学实验楼管理制度
2014/02/01 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
长城英文导游词
2015/01/30 职场文书