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 相关文章推荐
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
python魔法方法-自定义序列详解
Jul 21 Python
Python分治法定义与应用实例详解
Jul 28 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
Python编程中flask的简介与简单使用
Dec 28 Python
python代码编写计算器小程序
Mar 30 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
PyCharm第一次安装及使用教程
Jan 08 Python
python的pip有什么用
Jun 17 Python
python如何实现DES加密
Sep 21 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
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python代码制作configure文件示例
2014/07/28 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
2014年健康教育实施方案
2014/02/17 职场文书
党员承诺践诺书
2014/05/20 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
见习报告的格式
2014/11/04 职场文书
电力工程合作意向书
2015/05/11 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
信仰观后感
2015/06/03 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js