Как я могу получить сумму для клиента в текущем месяце в представлении django

Я работаю над проектом Django, в котором я хочу получить общее (суммарное) пополнение счета для каждого клиента в текущем месяце года в виде списка. Я пока не могу разобраться с этим, так как в запросе функции не используется ID, чтобы использовать метод .get() для фильтрации по id клиента. Ниже приведены моя модель и код представления:

class Customer(models.Model):
    surname = models.CharField(max_length=10, null=True)
    othernames = models.CharField(max_length=20, null=True)
    account_number = models.CharField(max_length=10, null=True)
    address = models.CharField(max_length=50, null=True)
    phone = models.CharField(max_length=11, null=True)
    date = models.DateTimeField(auto_now_add=True, null=True)

#Get the url path of the view
def get_absolute_url(self):
    return reverse('customer_create', args=[self.id])

#Making Sure Django Display the name of our Models as it is without Pluralizing
class Meta:
    verbose_name_plural = 'Customer'

#
def __str__(self):
    return f'{self.surname} {self.othernames} - {self.account_number}'

class Deposit(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, null=True)
    acct = models.CharField(max_length=6, null=True)
    staff = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    deposit_amount = models.PositiveIntegerField(null=True)
    date = models.DateTimeField(auto_now_add=True)

def get_absolute_url(self):
    return reverse('create_account', args=[self.id])

def __str__(self):
    return f'{self.customer} Deposited {self.deposit_amount} by {self.staff.username}'

Код просмотров:

def create_account(request):
    current_date = datetime.now().date()
    customers = Customer.objects.all()
    act = customers.account_number
    deposited_this_month = Deposit.objects.filter(customer__account_number=act, date__year=current_date.year, date__month=current_date.month).aggregate(deposited_this_month=Sum('deposit_amount')).get('deposited_this_month') or 0

У меня возникает ошибка, которая говорит Объект QuerySet не имеет атрибута 'account_number'. Буду признателен за лучшее решение этой проблемы. Пожалуйста, поймите, что каждый импорт модуля, контекст и отрисовка шаблона выполняются без проблем. Спасибо.

Чтобы получить сумму депозита для каждого клиента за данный месяц и год, необходимо сделать следующее:

from django.db.models.functions import ExtractYear, ExtractMonth
from django.db.models import Sum


Deposit.objects.filter(
    date__year=current_date.year,
    date__month=current_date.month
).annotate(
    month= ExtractMonth('date'),
    year= ExtractYear('date'),
).values(
    'customer__account_number',
    'year',
    'month',
).annotate(
    total_deposit=Sum('deposit_amount')
)
Вернуться на верх