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

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

моя модель

class Transaction(models.Model):
    trans_id = models.CharField(max_length=100, primary_key=True)  
    trans_date = models.DateTimeField(auto_now_add=True)  
    group_id = models.ForeignKey('Group', on_delete=models.CASCADE)  
    username = models.ForeignKey(User, on_delete=models.CASCADE)  
    trans_amount = models.FloatField()
    trans_type = models.CharField(max_length=20, default="contribution")  

    def __str__(self):
        return str(self.trans_id)

Как я могу получить итоговые суммы?

Вы можете воспользоваться функцией базы данных Trunc

Попробуйте

from django.db.models import Sum
from django.db.models.functions import TruncMonth

Transaction.objects.annotate(month=TruncMonth("trans_date"))
    .values("month")
    .annotate(sum=Sum("trans_amount"))

Распутница будет выглядеть как

[
    {
        "month": "2022-04-01T00:00:00Z",
        "sum": 10.0
    },
    {
        "month": "2022-05-01T00:00:00Z",
        "sum": 20.0
    }
]
Вернуться на верх