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/