Django:是否有一种方法可以在搜索后重新汇总总和?

时间:2019-04-24 09:38:15

标签: django python-3.x django-views

当前在我的 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)

如何获得一个结果,该结果将基于某个月的每次搜索后汇总总和?

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了,我刚刚在 search 的if语句中添加了total_salary,并用 date__month = search替换了 date__month = current_month