from Base.models import Professional , ServiceList from Movement.models import Calendar # from django.utils import timezone from django.db.models import Sum def metric(Day): professionals = Professional.objects.all() services = ServiceList.objects.all() service_movement = Calendar.objects.filter(date=Day).values() professionals_report = {} for professional in professionals: professionals_report[professional.name] = {} for service in services: service_sum = service_movement.filter( professional__name=professional.name, service__name=service.name, ) servSum =service_sum.aggregate(Sum('gross_value'))['gross_value__sum'] or 0 servCont = service_sum.count() professionals_report[professional.name][service.name] = { 'servSum':servSum, 'servCont':servCont, } sum_of_prof = sum( sum(service['servSum'] for service in services.values()) for services in professionals_report.values() ) return { 'professionals_report':professionals_report, 'sum_of_prof':sum_of_prof, }