Как получить сумму транзакций за месяц в 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
}
]