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的Django框架测试驱动开发的教程
Apr 22 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 Python
Django中使用MySQL5.5的教程
Dec 18 Python
python如何进行矩阵运算
Jun 05 Python
Python利器openpyxl之操作excel表格
Apr 17 Python
python 制作一个gui界面的翻译工具
May 14 Python
python模板入门教程之flask Jinja
Apr 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 curl实现抓取302跳转后页面的示例
2014/07/04 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
21行Python代码实现拼写检查器
2016/01/25 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python之信息加密题目详解
2019/06/26 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
深圳-东方伟业笔试部分
2015/02/11 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
会计毕业生自荐信
2013/11/21 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
运动会广播稿20字
2014/02/18 职场文书
升学宴主持词
2014/04/02 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
总经理致辞
2015/07/29 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL