当前在我的 ListView 中,有一个过滤器仅显示当前月份和年份的数据,并汇总了总和。现在,在我的过滤中存在三个问题。
第一个问题;该过滤器只能显示当前的月份和年份,而用户无法查看前一个月份和年份。
第二个问题; 日期__包含的搜索过滤器仅接受月份的数值。
第三个问题;在为某个月添加搜索过滤器后,该过滤器不会重新汇总总和。
这是我的PayrollView
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)
如何获得一个结果,该结果将基于某个月的每次搜索后汇总总和?
答案 0 :(得分:0)
我已经弄清楚了,我刚刚在 search 的if语句中添加了total_salary,并用 date__month = search替换了 date__month = current_month