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使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
Python创建模块及模块导入的方法
May 27 Python
python编写分类决策树的代码
Dec 21 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
在django中自定义字段Field详解
Dec 03 Python
Python实现不规则图形填充的思路
Feb 02 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
Python 文字识别
May 11 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 UTF8 文件的签名问题
2009/10/30 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
遍历jquery对象的代码分享
2011/11/02 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
Django中的AutoField字段使用
2020/05/18 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
详解Python中的文件操作
2021/01/14 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
Android面试题及答案
2015/09/04 面试题
安全生产投入制度
2014/01/29 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python