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 相关文章推荐
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
python爬取天气数据的实例详解
Nov 20 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
python自动生成证件号的方法示例
Jan 14 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 Python
Python深度学习之Pytorch初步使用
May 20 Python
python实现手机推送 代码也就10行左右
Apr 12 Python
python实现学生信息管理系统(面向对象)
Jun 05 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生成自己的LOG文件
2006/10/09 PHP
php遍历目录viewDir函数
2009/12/15 PHP
zend framework多模块多布局配置
2011/02/26 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
php bootstrap实现简单登录
2016/03/08 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
js left,right,mid函数
2008/06/10 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
手把手教你python实现SVM算法
2017/12/27 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Django model update的多种用法介绍
2020/03/28 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
药品采购员岗位职责
2014/02/08 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
2016关于军训的心得体会
2016/01/11 职场文书