【发布时间】:2017-11-16 02:48:37
【问题描述】:
我有一个 Django 模型,它有一个日期字段,我想创建一个列表过滤器,它将显示以下选项,
当前
2017
2016
2015
点击年份链接后,它将折叠成月份,
2017
01
02
03
04 ...
我尝试了默认的DateFieldListFilter,但它只有以下选项,
任何
今天
过去 7 天
本月
今年
我尝试使用 SimpleListFilter 解决此问题,但未能成功。
class MonthFilter(admin.SimpleListFilter):
title = 'Month'
parameter_name = 'month'
def lookups(self, request, model_admin):
months = [["current", "Current"]]
qs = model_admin.model.objects.exclude(ts_from=None).order_by('ts_from')
last= qs[0]
last_year = last.ts_from.year
current = timezone.now()
current_year = current.year
months.append([current_year, current_year])
months.append([last_year, last_year])
return months
def queryset(self, request, queryset):
if self.value():
return queryset.filter(ts_from__contains=self.value())
else:
return queryset
【问题讨论】: