目前在我的ListView中有一个过滤器,它只显示当前月份和年份的数据,它聚合了总和。现在,在我的过滤中有三个问题。
第一个问题;筛选器只能显示当前月份和年份,用户无法查看上个月和去年。
第二个问题;date__icontains的搜索筛选器仅接受月份的数值。
第三个问题;添加某个月份的搜索筛选器后,筛选器不会重新聚合总和。
这是我的工资单视图
class PayrollView(LoginRequiredMixin, ListView):
template_name = 'payroll/payroll.html'
def get(self, request, *args, **kwargs):
search = request.GET.get('search')
user = request.user.staffs.full_name
current_month = datetime.date.today().month
current_year = datetime.date.today().year
payroll_list = VaPayroll.objects.all()
payroll_data = payroll_list.filter(Q(virtual_assistant__name=user),
Q(date__month=current_month))
total_salary = VaPayroll.objects.filter(Q(virtual_assistant__name=user),
Q(date__month=current_month),
Q(date__year=current_year)).aggregate(Sum('salary'))
if search:
payroll_data = payroll_list.filter(Q(virtual_assistant__name=user),
Q(date__icontains=search))
payroll_data
context = {
'total_salary': total_salary,
'payroll_data': payroll_data
}
return render(request, self.template_name, context)
如何获得基于特定月份的每次搜索后汇总总和的结果?
我已经想通了,我只是在搜索的if语句中添加了total_salary,并将date__month=current_month替换为date__month=搜索