You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中为DateTime字段设置日历式list_filter筛选器?

实现Django Admin弹出式日历日期时间筛选

方法一:使用Django内置DateTimeRangeFilter(Django 3.1+)

Django 3.1及以上版本自带支持弹窗日历的时间范围筛选器,直接替换默认配置即可:

修改admin.py

from django.contrib import admin
from django.contrib.admin.filters import DateTimeRangeFilter
from .models import XYZ

class XYZAdmin(admin.ModelAdmin):
    list_filter = (
        ('start', DateTimeRangeFilter),  # 为start字段指定弹窗日历筛选器
        ('end', DateTimeRangeFilter),    # 可选:给end字段也配置同样的筛选器
    )

admin.site.register(XYZ, XYZAdmin)

配置完成后,Admin列表页的时间筛选器会变为带日历图标的输入框,点击即可弹出日历选择自定义日期时间范围,匹配你想要的效果。


方法二:使用第三方包django-admin-rangefilter(兼容低版本Django)

如果你的Django版本低于3.1,或者需要更灵活的功能,可借助第三方包实现:

1. 安装包

pip install django-admin-rangefilter

2. 配置settings.py

将rangefilter添加到INSTALLED_APPS:

INSTALLED_APPS = [
    # ... 其他已有应用
    'rangefilter',
    # ... 你的业务应用
]

3. 修改admin.py

from django.contrib import admin
from rangefilter.filters import DateTimeRangeFilter
from .models import XYZ

class XYZAdmin(admin.ModelAdmin):
    list_filter = (
        ('start', DateTimeRangeFilter),
        ('end', DateTimeRangeFilter),
    )

admin.site.register(XYZ, XYZAdmin)

此包提供的筛选器同样支持弹窗日历选择,交互样式与内置版本一致,同时兼容更早的Django版本。


内容的提问来源于stack exchange,提问作者Ali Rahmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:40:19