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页面上注册后就可以看到效果了。
参考链接: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介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]