Django:有没有办法在搜索后重新聚合总和?



目前在我的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=搜索

最新更新