django admin管理工具自定义时间区间筛选器DateRangeFilter

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_第1张图片

参考链接:
https://pypi.org/project/django-daterange-filter/1.1.1/

你可能感兴趣的:(Django学习笔记,Python,Django,admin,list_filter)