Джанго: Есть ли способ собрать сумму после поиска? - PullRequest
0 голосов
/ 24 апреля 2019

В настоящее время в моем 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)

Как мне получить результат, который будет агрегировать сумму после каждого поиска по определенному месяцу?

1 Ответ

0 голосов
/ 24 апреля 2019

Я понял, я просто добавил total_salary в операторе if search и заменил date__month = current_month на date__month = search

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...