我有一个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
答案 0 :(得分:1)
我猜你在查询集中没有过滤月份
def queryset(self, request, queryset):
month = request.GET.get('month') or datetime.now().month
if self.value():
return queryset.filter(ts_from__contains=self.value(), created__month=month)
else:
return queryset
答案 1 :(得分:0)
我制作了2个过滤器,一个过滤器用于一年,另一个则过滤器用于月份:
import time
from tkinter import *
from tkinter import messagebox
print("Testing program")
time.sleep(5)
print("Program tested")
window=Tk()
window.withdraw()
messagebox.showinfo('Successful','Script executed successfully')
window.deiconify()
window.destroy()
window.quit()
这不是理想的解决方案,但我想比每个月安装一个软件包进行过滤要好