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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
Apr 01 Python
python中while循环语句用法简单实例
May 07 Python
Python检测网络延迟的代码
May 15 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
python自动化测试之如何解析excel文件
Jun 27 Python
python 图片去噪的方法示例
Jul 09 Python
Python实现word2Vec model过程解析
Dec 16 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
你需要学会的8个Python列表技巧
Jun 24 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获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
PDO::exec讲解
2019/01/28 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
js取得url地址参数实例
2013/02/22 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
深入理解vuex2.0 之 modules
2017/11/20 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
python中xrange用法分析
2015/04/15 Python
Python素数检测的方法
2015/05/11 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
int在python中的含义以及用法
2019/06/27 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
环卫工作个人总结
2015/03/04 职场文书
酒会开场白大全
2015/06/01 职场文书
市级三好生竞选稿
2015/11/21 职场文书