如何更新使用Django一个会计应用的平衡?(How to update balance in a

2019-09-21 05:26发布

我正在学习Django的,试图用于跟踪我的费用等做会计的应用..

我有两个型号,一个账户,一个用于操作创建的数据库。 但我不知道如何让我的平衡,每个操作更新。

我在想,也许,每次我保存新的操作,我更新由超控操作模式的保存方法的平衡? 但在这种情况下,如果我犯了一个错误,并有权删除一个操作,我的平衡将不会被更新,然后,对不对?

我想我也可以在删除操作的情况下创建一个BalanceHistory模型,所有结余的历史,但随后同样的问题..

我看到的最好的选择是我想要显示它每一次动态更新我的平衡,将所有的操作在那个时候..但我不明白我怎么能做到这一点..

因此,如果任何人有关于一些见解,那将是巨大的。 我知道这是不是一个纯粹的Django相关的问题,但我与Django的工作,它会更好,如果我可以使用Django功能找到一个主意!

在此先感谢您的时间和您的帮助!

Answer 1:

你说得对,这是有难度的 - 没有办法保证,除了通过动态地计算它基于账户的整个历史每读一个准确的平衡。

如果选择走那条路,你可以使用Django的ORM的聚集功能来计算业务的总和。 例如,如果你的操作有一个域名为amount (表示该操作在平衡变化的正数或负数),你可以可以计算余额,如:

Operation.objects.filter(account=my_account).aggregate(balance=Sum('amount'))

如果你不想做,不管什么原因,你也可以使用自定义的保持运行平衡save方法,你所描述。 您可以使用delete方法一样save处理单个项目的缺失。

然而,这种方法会造成问题,如果你有用户批量插入,更新或删除或原始SQL操作,因为这些不会调用savedelete的方法。 但是,如果你需要使用这些功能,你可能能够使用一种混合的方法-使用savedelete选项做一次性交易时,并触发完整计算与聚集定期做一个后修正错误或立即你知道操作将搞砸了平衡。



文章来源: How to update balance in a accounting app with django ?