Необходимо рассчитать общее время по месяцам в django

Я создал функцию для вычисления общего времени.

def emp_attendance(request):
    attendance_list_ad = Attendance.objects.all()
    total = None
    for item in attendance_list_ad:
        if item.total_time is not None:
            if total is None:
                total = item.total_time
            else:
                total += item.total_time
    return render(request, 'employee/emp_attendance.html'{'attendance_list_ad': attendance_list_ad, 'total': 
                               total})

while print:

дата посещения = 2023-01-09 общее_время = 1: 00: 00

Итак, мой вопрос заключается в том, что на первой странице эта функция вычисляет общее время всех входов, которые находятся в базе данных. Но я хочу вычислить общее время по месяцам, так как в дате посещения у нас есть месяц 01. Тогда общее время будет вычислено

Я не уверен, что полностью понимаю ваш вопрос.

Возможно, модуль datetime в Python будет вам полезен, возможно, нет.

Основываясь на ваших комментариях к ответу Trobosko, мне кажется, что у вас есть набор записей в базе данных, и вам нужно отфильтровать результаты, не относящиеся к текущему месяцу. (Далее следуют действия, которые вы хотите выполнить над "чистыми" данными, с которыми вы, похоже, разобрались)

Это не должно быть сложно сделать, я смогу помочь, если вы предоставите некоторую информацию о вашей базе данных (возможно, какую именно, какие таблицы и запрос?). Возможно, также формат хранимых дат.

Если вы хотите получить сумму общего времени за каждый месяц, вы можете сделать это следующим образом...

from django.db.models import Sum
attendance_list_ad = Attendance.objects.filter(Date_field__year='2022').values_list('month').annotate(total_time=Sum('total_time'))

Но если вы используете поле dateTime, а не просто месяц для каждого элемента. Вы можете попробовать сделать следующее, хотя я сомневаюсь, что это сработает.

from django.db.models import Sum
attendance_list_ad = Attendance.objects.filter(Date_field__year='2022').values_list('Date_field__month').annotate(total_time=Sum('total_time'))
Вернуться на верх