在django模板中显示银行账户余额的推荐方法

在django模板中显示银行账户余额的推荐方法,django,django-templates,Django,Django Templates,在Django中,我有一个记录事务的模型(日期、金额、描述字段)。在我看来,我想展示一种跑步平衡,类似这样: Date | Description | Amount | Balance ---------------------------------------------- 2019-01-01 | Item 1 | $100 | $100 2019-01-02 | Item 2 | -$10 | $90 2019-01-03 | Item 3

在Django中,我有一个记录事务的模型(日期、金额、描述字段)。在我看来,我想展示一种跑步平衡,类似这样:

Date       | Description | Amount | Balance
----------------------------------------------
2019-01-01 | Item 1      | $100   | $100
2019-01-02 | Item 2      | -$10   | $90
2019-01-03 | Item 3      | $200   | $290
2019-01-04 | Item 4      | $10    | $300
现在的问题是,余额当然应该通过将以前的余额和当前交易相加来计算。对我来说,在视图中进行此计算似乎最有意义。我不知道还有什么明智的方法可以把它放在别的地方。这是正确的吗?如果是这样,最好的方法是什么?如果没有,正确的处理方法是什么

class Transaction(models.Model):
    date = models.DateField()
    amount = models.DecimalField(max_digits=15, decimal_places=2)
    account = models.ForeignKey(BankAccount, on_delete=models.CASCADE)
    description = models.TextField(null=True, blank=True)
我认为:

transactions = Transaction.objects.filter(account__id=100).order_by("date")

你可以用积数来实现这一点。 为了便于理解,我把逻辑分解了

从django.db.models导入窗口,求和,F
从django.db.models.functions导入Lead
transactions=Transaction.objects.filter(帐户id=100)。注释(
#这会将“累计金额”加在您的实例上
累计金额=窗口(总和('amount'),订单日期('date')。asc())
#我们现在从默认值开始移动“累计金额”
余额=潜在客户(表达式='累计金额',偏移量=1,默认值=F('您的默认值'))
)

这对我来说是全新的。非常感谢,这是一个多么好的方式!您可能想查看django关于聚合和注释的文档!行!谢谢@Julien!