В настоящее время в моем ListView есть фильтрация, которая показывает только данные текущего месяца и года и объединяет Sum . Теперь в моей фильтрации есть три проблемы.
1-я проблема; Фильтр может отображать только текущий месяц и год, но пользователь не может просматривать предыдущий месяц и год.
2-я задача; Фильтр поиска для date__icontains принимает только числовые значения месяцев.
3-я задача; После того, как я добавил поисковый фильтр за определенный месяц, фильтр не агрегирует Sum .
Это мой 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)
Как мне получить результат, который будет агрегировать сумму после каждого поиска по определенному месяцу?